selenium xpath定位技巧

1、利用兄弟、父子节点定位

如上,当我们想定位input标签时,但是该id是动态的,class属性又是和很多标签相同时,我们可以看下父子节点或者兄弟节点,

比如上面label标签,就有个特点,利用文本来定位:

//label[text()=\"获取默认网关并添加到系统默认路由\"]

这样input的定位也出来了,其中  .. 表示上一级,也就是父节点

//label[text()=\"获取默认网关并添加到系统默认路由\"]/../input

2、当定位时,怎么看xpath都是对的,但是就是找不到,可以考虑以下几点:

  • 是否存在iframe标签下,iframe标签相当于另外的一个页面,当元素处于其下时,需要先跳入iframe,
    driver.switch_to_frame(元素定位)
  • 可能元素还未出现,需要等待几秒,使用sleep,或者
    wait_until_element_is_visible()
  • 使用其他元素帮助定位,如父子节点 

3、 判断input框是否勾选并勾选:

        input_select  = self.selenium.get_webelement(xpath路径)#元素定位
        # 判断勾选框是否已经选中
        selected = input_select.is_selected()
        if selected:
            print('已经选中')
        else:
            print('未选中')
            input_select.click()

4、根据class属性定位的格式:

//div[@class=\"x-grid3-body\"]

5、当想定位的节点需要先定位父节点,而父节点根据class属性定位出来有多个结果

先用xpath定位父节点,

list_webelements=self.selenium.get_webelements(xpath路径)
list_webelements[父节点所在的列表位置].find_element_by_xpath('./table/tbody/tr/td[1]/div/div').click()

其中 .  表示当前路径

6、验证自己的xpath是否正确

谷歌浏览器f12,console输入$x("xpath路径"),看能否获取到想要的结果

7、过滤出来的元素有多个,取其中一个继续过滤

tmp_webelement = self.selenium.get_webelements('//table[@class=\"x-btn   x-btn-noicon adm-form-window-btn sdn-sbumit-btn\"]')[1]
tmp_webelement.find_element_by_xpath("./tbody/tr[2]/td[2]/em/button").click()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值