web自动化学习01——单个元素定位方式

单个元素的定位方式有8种,分别是:

  1. id :driver.find_element_by_id()

  2. class_name:driver.find_element_by_class_name()

  3. name:driver.find_element_by_name()

  4. link_text:driver.find_element_by_link_text()

  5. partial_link_text:driver.find_element_by_partial_link_text()

  6. tag_name:driver.find_element_by_tag_name()

  7. css_selector:driver_find_element_by_css_selector()

  8. xpath:driver.find_element_by_xpath()   

(xpath定位方法详见:https://www.cnblogs.com/XiqueBlogs/p/15048407.html

(By方式定位见:https://www.cnblogs.com/XiqueBlogs/p/15050045.html

常用的有:id、class_name、name、link_text、partial_link_text、xpath

 

from selenium import  webdriver
import time
class elementLocator():
    '''
    单个元素定位8种方式:
    1)id :driver.find_element_by_id()
    2)class_name:driver.find_element_by_class_name()
    3)name:driver.find_element_by_name()
    4)link_text:driver.find_element_by_link_text()
    5)partial_link_text:driver.find_element_by_partial_link_text()
    6)tag_name:driver.find_element_by_tag_name()
    7)css_selector:driver_find_element_by_css_selector()
    8)xpath:driver.find_element_by_xpath()
    '''
    def __init__(self):
        # 加启动配置
        option = webdriver.ChromeOptions()
        # 关闭“chrome正受到自动测试软件的控制”
        # V75以及以下版本
        # option.add_argument('disable-infobars')
        # V76以及以上版本
        option.add_experimental_option('useAutomationExtension', False)
        option.add_experimental_option('excludeSwitches', ['enable-automation'])
        # 不自动关闭浏览器
        option.add_experimental_option("detach", True)
        self.driver= webdriver.Chrome(chrome_options=option)
        self.driver.get("http://www.baidu.com")
        self.driver.maximize_window()

    #id定位
    def elementLocator_by_id(self):
        #搜索输入框
        search_input = self.driver.find_element_by_id("kw")
        #搜索selenium
        search_input.send_keys("selenium")
        #搜索按钮
        search_button = self.driver.find_element_by_id("su")
        #点击搜索按钮
        search_button.click()
        time.sleep(2)
        self.driver.close()

    #class_name定位
    def elementLocator_by_class_name(self):
        #搜索输入框
        search_input = self.driver.find_element_by_class_name("s_ipt")
        #搜索python
        search_input.send_keys("python")
        #搜索按钮
        serch_button = self.driver.find_element_by_class_name("s_btn")
        #点击搜索按钮
        serch_button.click()
        time.sleep(4)
        self.driver.close()

    #name定位
    def elementLocator_by_name(self):
        # 搜索输入框
        search_input = self.driver.find_element_by_name("wd")
        # 搜索tester
        search_input.send_keys("tester")
        # 搜索按钮
        serch_button = self.driver.find_element_by_class_name("s_btn")
        # 点击搜索按钮
        serch_button.click()
        time.sleep(4)
        #self.driver.close()

    #link_text定位
    def elementLocator_link_text(self):
        #新闻链接入口
        news_href = self.driver.find_element_by_link_text("新闻")
        #点击新闻链接入口
        news_href.click()
        time.sleep(4)
        self.driver.close()

    #partial_link_text定位
    def elementLocator_partial_link_text(self):
        # 新闻链接入口
        news_href = self.driver.find_element_by_link_text("新闻")
        # 点击新闻链接入口
        news_href.click()
        #获取所有handles
        all_handles = self.driver.window_handles
        #print(all_handles)
       #切换到新闻handle
        self.driver.switch_to.window(all_handles[1])
        #print(self.driver.current_window_handle)
        #打开"这道光,照亮前行之路——井冈山精神述评"这篇新闻
        news_content = self.driver.find_element_by_partial_link_text("照亮前行之路")
        news_content.click()
        time.sleep(4)
        self.driver.close()

    #tag_name定位
    def elementLocator_tag_name(self):
        '''
        根据标签类型来定位,一般一个页面同一个类型的标签有很多,所以不采用这种方法进行定位
        :return:
        '''
        pass

    #css_selector定位
    def elementLocator_css_selector(self):
        #定位新闻换一换图标
        news_refresh = self.driver.find_element_by_css_selector("#hotsearch-refresh-btn > span")
        #点击刷新图标
        news_refresh.click()

    #xpath定位
    def elementLocator_xpath(self):
        #定位到登录按钮
        login_button = self.driver.find_element_by_xpath("//a[@id='s-top-loginbtn']") #相对定位
        #login_button = self.driver.find_element_by_xpath("/html/body/div/div/div[4]/a") #绝对定位(不建议)
        #点击登录按钮
        login_button.click()
        time.sleep(4)
        self.driver.close()


elementLocator().elementLocator_xpath()

 

posted @ 2021-07-22 18:35  惜阙  阅读(74)  评论(0编辑  收藏  举报