selenium解决由于浏览器支持不好而导致的元素无法定位的问题

最近在做一个selenium的测试,对网页进行爬取,遇到了很多问题。下面来总结一下。

我在测试的时候,明明通过xpath或者css匹配到了元素,但是就是无法进行点击。研究了之后,发现是浏览器的支持性不太好导致的。

首先,当出现这个问题的时候,我们要学会排除可能导致出错的原因,第一点就是可能是frame导致的,当你发现前端代码出现iframe标签时,要想定位里面的元素,必须进行表单切换。
切换的方法是switch_to_frame()

如果表单切换了还是定位不到,例如需要通过点击加号才能展开的无序列表,由于浏览器支持性不好,元素定位会出现问题。那么此时有两种解决办法的思路:
1.根据元素的坐标进行定位,然后通过移动这个坐标从而获取真正需要点击的位置。
获取元素坐标的方法就是

element_location = driver.find_element_by_xpath("元素xpath路径").location
横坐标 = element_location['x']
纵坐标 = element_location['y']

然后进行坐标的移动或者直接按照坐标定位

2.对于checkbox、radiobox这种的,如果浏览器支持不好鼠标根本没办法点击
解决办法就是先通过xpath定位到这个元素,然后发送一个空格就选中了。

# checkbox
driver.find_element_by_xpath('').click()  # click
driver.find_element_by_xpath('').send_keys(Keys.SPACE)  # send space

# radio
driver.find_element_by_xpath('').send_keys(Keys.SPACE)
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值