Selenium webdriver 访问Google chrome 的设置页面无法定位(shadow root)问题

如题,在Google chrome 的设置页面 ,使用 Selenium webdriver
想使用 driver.find_element_by_xpath(“xxxx”).click( ) 对其中的元素进行定位
例如:对下载位置的更改键进行 xpath 定位获取到的XPATH为:
//*[@id=“changeDownloadsPath”]//cr-button

提示错误:找不到元素:
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {“method”:“xpath”,“selector”:"//*[@id=‘cnblogs_post_body’]/table[2]/tbody/tr[3]/td[2]/font"}
(Session info: chrome=79.0.3945.130)

错误原因:
shadown dom 的存在
具体可以参考:

https://www.cnblogs.com/yangguoe/p/8486046.html

在这里插入图片描述
解决方案:
(1)stack overflow上有大佬的各种方法,俺没有试(懒懒懒)
(2)CSDN有位大佬也提供了方法,俺也没试(懒懒懒,附链接)

https://blog.csdn.net/LeonLee85/article/details/101566770

(3)小白要求没那么高,想要简单粗暴解决,直接调用 pyautogui ,在设置页面狂点 tab 45次 再点一次 enter 就会出现奇迹!(由于本人的项目中其他地方也要用到pyautogui,所以没有感觉增加很多额外力气)具体操作如下:

driver = webdriver.Chrome(executable_path=config['driver_path'], options=opt)          # 创建浏览器对象
driver.maximize_window()                                                               # 最大化窗口
driver.get("chrome://settings/downloads")
time.sleep(2)
for i in range(5):
    pyautogui.press(['tab', 'tab', 'tab', 'tab', 'tab', 'tab', 'tab', 'tab', 'tab'])   # 按下 5 * 9 = 45 次正好到更改
pyautogui.press('enter')                                                               # 点击“更改按钮”

关于pyautogui的使用,个人觉着这个还可以:

https://www.jianshu.com/p/e4f4ca3f6b52

这样做不一定能解决你的问题,但是解决了我的问题hhh~

我是什么问题这样粗暴操作就能解决?
阔以看看这个迷惑行为:
(此处应该有链接,但是俺还在写hhh~)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值