Selenium selenium 定位不了

强势振兴 · 2018年12月12日 · 最后由 luhaitao1 回复于 2019年06月15日 · 3837 次阅读

大师瞧一瞧

共收到 19 条回复 时间 点赞
  1. 看下你要操作的这个元素是什么类型,支不支持 send keys
  2. 不建议全部使用 xpath 定位元素, 多用 id 、name 这些较为稳定的属性

你的 xpath 都这么写吗,不是 xpath 的问题,xpath 什么都会定位到的,你的 xpath,写得太惨不忍睹了

楼主也没有说要定位什么啊。是什么定位不到。怀疑是 chrome 右键 ‘Copy Xpath’ 得到的,这样太难看了。

Jerry li 回复

class 标签
除了 xpath 没别的元素可定位了。

程航 回复

还有别的方法得到 xpath

@ 强势振兴 可以自己删减一些节点

你的报错不是找不到,是不能 focus 这个元素

8楼 已删除
Bug_Hunter 回复

不行呀

你这是下拉选择框吧

sandy 回复

是的

强势振兴 回复

可以用 JS 直接点击要点的,不用把下拉框点开

sandy 回复

具体用哪个语法

强势振兴 回复

百度一下你就知道了。。其实不但元素定位不到。。后面有坑就是动态框也定位不到的。。。踩踩你就知道怎么搞了。
用 onclick

仅楼主可见

😂 你这么一堆定位堆起来好乱啊,可以把数据和操作分离起来搞

强势振兴 回复

js = 'document.getElementsByClassName("ico")[0].click();'
driver.execute_script(js)
类似这样子

强势振兴 回复

driver.find_element_by_id("signIn").click() 点击一般都用 click 不用 sendkey

试试用 js
def test_executeScript(self):
url = 'http://www.baidu.com'
self.driver.get(url)

searfchInputBoxjs = 'document.getElementByid("kw").value=“测试数据”'
searfchButtonjs = 'document.getElementByid("su").click()'

try:
self.driver.execute_script(searfchInputBoxjs)
time.sleep(2)
self.driver.execute_script(searfchButtonjs)
time.sleep(2)
self.assertEqual('百度百科' in self.driver.page_source)
except WebDriverException as e:
print('没有找到元素')
except AssertionError as e:
print('页面不存在断言的关键字')
except Exception as e:
print(traceback.print_exc())

先定位下拉框,再用鼠标悬停点击操作就行

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册