Selenium webdriver can#39;t find elements at chrome://downloads(Selenium webdriver 在 chrome://downloads 找不到元素)
问题描述
我在 python 中使用 selenium 和 chromedriver.
I use selenium with the chromedriver in python.
我的问题是当我尝试访问 chrome 下载页面 (chrome://downloads) 上的元素时,selenium 给了我一个错误.例如,我尝试获取文件 url "http://file.jpg".
My problem is that selenium gives me an error as i try to access elements on the chrome download page (chrome://downloads). For example i try to get the file url "http://file.jpg".
<a id="url" target="_blank" href="http://file.jpg">http://file.jpg</a>
但是当我尝试通过它的 id 获取元素时,我得到了一个异常.
But as i try to get the element by its id I get an exception.
代码:
driver = webdriver.Chrome("chromedriver.exe")
driver.get("chrome://downloads/")
file_url = driver.find_element_by_id("url").get_attribute("href")
例外:
Traceback (most recent call last):
File "<pyshell#34>", line 3, in <module>
driver.find_element_by_id("url")
File "D:Pythonlibsite-packagesseleniumwebdriver
emotewebdriver.py", line 269, in find_element_by_id
return self.find_element(by=By.ID, value=id_)
File "D:Pythonlibsite-packagesseleniumwebdriver
emotewebdriver.py", line 752, in find_element
'value': value})['value']
File "D:Pythonlibsite-packagesseleniumwebdriver
emotewebdriver.py", line 236, in execute
self.error_handler.check_response(response)
File "D:Pythonlibsite-packagesseleniumwebdriver
emoteerrorhandler.py", line 192, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"id","selector":"url"}
(Session info: chrome=56.0.2924.87)
(Driver info: chromedriver=2.27.440174 (e97a722caafc2d3a8b807ee115bfb307f7d2cfd9),platform=Windows NT 10.0.10586 x86_64)
通过 driver.execute_script()
使用 javascript 对我也不起作用.当我在浏览器中看到元素时,为什么会收到 NoSuchElementException
?
Using javascript via driver.execute_script()
didn't work for me either.
Why am i getting a NoSuchElementException
when i can see the element in the browser?
推荐答案
位于多个 shadow-root
块内的目标链接.试试这个:
Target link located inside several shadow-root
blocks. Try this:
driver = webdriver.Chrome("chromedriver.exe")
driver.get("chrome://downloads/")
manager = driver.find_element_by_css_selector('body/deep/downloads-manager')
item = manager.find_element_by_css_selector('body/deep/downloads-item')
shadow = driver.execute_script('return arguments[0].shadowRoot;', item)
link = shadow.find_element_by_css_selector('div#title-area>a')
file_url = link.get_attribute("href")
这篇关于Selenium webdriver 在 chrome://downloads 找不到元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Selenium webdriver 在 chrome://downloads 找不到元素
基础教程推荐
- 使用PyInstaller后在Windows中打开可执行文件时出错 2022-01-01
- 何时使用 os.name、sys.platform 或 platform.system? 2022-01-01
- Python kivy 入口点 inflateRest2 无法定位 libpng16-16.dll 2022-01-01
- 在 Python 中,如果我在一个“with"中返回.块,文件还会关闭吗? 2022-01-01
- 用于分类数据的跳跃记号标签 2022-01-01
- 如何在海运重新绘制中自定义标题和y标签 2022-01-01
- 筛选NumPy数组 2022-01-01
- Dask.array.套用_沿_轴:由于额外的元素([1]),使用dask.array的每一行作为另一个函数的输入失败 2022-01-01
- 线程时出现 msgbox 错误,GUI 块 2022-01-01
- 如何让 python 脚本监听来自另一个脚本的输入 2022-01-01