web自动化学习04——xpath定位详解

在元素定位过程中使用最多的是xpath定位,有以下几种定位方法:

1)绝对定位:利用html属性,从/html/body/.../...    一直到需要定位的元素标签,其中如果存在多个相同的元素标签,如:有5个div标签,此时需要定位到的是第3个标签,则写为div[3]     (ps:这种方式不推荐,因为前端只要有一丁点儿变动,定位路径就不正确)

2)相对定位:利用元素标签和元素标签的id,name,class等值进行定位,格式为://标签类型[@属性类型=‘属性值’],如百度搜索框则可以写为://input[@id=‘kw‘]

3)利用层级与属性:当不能直接定位到元素时,可以定位到它的父级或者祖父级的元素在定位到指定位置,如百度搜索框: driver.find_element_by_xpath(" //span[@class=‘s_ipt_wr‘]/input")

web自动化学习04——xpath定位详解

 

 

4)使用逻辑连接词:如果一个属性不能唯一确定一个元素时,可以使用逻辑连接词( and ,or)来连接多个属性。如百度搜索框: driver.find_element_by_xpath(" //input[@class=‘s_ipt‘  and  @name=‘wd‘]")

web自动化学习04——xpath定位详解

 

 

 

5)contains()方式:若定位元素的属性中存在多个属性值,如下所示,可以使用contains(属性,‘部分属性值‘)的方式定位,如://span[contains(class,‘s_ipt_wr‘)]

web自动化学习04——xpath定位详解

6)text()方式:对于类似链接的元素,可以使用text()方式根据文本信息定位元素,如:定位到百度首页的新闻标签,//a[text()=‘新闻‘]。同时可以结合contains()来使用,如://a[contains(text(),‘新闻‘)

web自动化学习04——xpath定位详解

 

 

from selenium import webdriver

class elementLocator_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()

    #相对定位
    def xpath_relative(self):
        #定位搜索输入框
        search_input = self.driver.find_element_by_xpath("//input[@id=‘kw‘]")
        #输入郑州
        search_input.send_keys("郑州")
        #定位到搜索按钮
        search_button = self.driver.find_element_by_xpath("//input[@id=‘su‘]")
        #点击搜索按钮
        search_button.click()

    #绝对定位
    def xpath_absolute(self):
        # 定位搜索输入框
        search_input = self.driver.find_element_by_xpath("/html/body/div/div/div[5]/div/div/form/span/input")
        # 输入成都软件测试
        search_input.send_keys("成都软件测试")
        # 定位到搜索按钮
        search_button = self.driver.find_element_by_xpath("/html/body/div/div/div[5]/div/div/form/span[2]/input")
        # 点击搜索按钮
        search_button.click()

    #层级与属性结合
    def xpath_level_attribute(self):
        ‘‘‘
        定位不到该元素时,可以先定位父亲级元素,再定位到该元素
        ‘‘‘
        #先定位到搜索输入框的上上一级
        # 定位搜索输入框
        search_input = self.driver.find_element_by_xpath("//form[@id=‘form‘]/span/input")
        # 输入德昌天气
        search_input.send_keys("德昌天气")
        # 定位到搜索按钮
        search_button = self.driver.find_element_by_xpath("//form[@id=‘form‘]/span[2]/input")
        # 点击搜索按钮
        search_button.click()

    #逻辑运算符
    def xpath_logic_operator(self):
        #定位到搜索输入框
        search_input =  self.driver.find_element_by_xpath("//input[@name=‘wd‘ and @class=‘s_ipt‘]")
        #输入美团
        search_input.send_keys("美团")
        #定位到搜索按钮
        search_button = self.driver.find_element_by_xpath("//input[@id = ‘su‘ or @class = ‘s_btn‘]")
        #点击按钮
        search_button.click()

    #contains方法
    def xpath_contains(self):
        #定位到搜索框
        search_input = self.driver.find_element_by_xpath("//span[contains(@class,‘s_ipt_wr ‘)]/input")
        #输入python自动化
        search_input.send_keys("python自动化")
        #定位到搜索按钮
        search_button = self.driver.find_element_by_xpath("//input[contains(@class,‘s_btn‘)]")
        #点击搜索按钮
        search_button.click()

    #text()方法
    def xpath_text(self):
        #方法一:定位到新闻链接
        #news_href = self.driver.find_element_by_xpath("//a[text()=‘新闻‘]")
        #方法二:使用contains姐合text()定位
        news_href = self.driver.find_element_by_xpath("//a[contains(text(),‘新闻‘)]")
        news_href.click()
        #点击新闻链接


elementLocator_Xpath().xpath_text()

 

web自动化学习04——xpath定位详解

上一篇:【PythonChallenge】Level 4


下一篇:《自制操作系统》第3天:32位模式 和 开始使用C语言