Selenium webdriver无法在chrome下找到元素:// downloads [英] Selenium webdriver can't find elements at chrome://downloads

查看:1651
本文介绍了Selenium webdriver无法在chrome下找到元素:// downloads的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



我的问题是,当我尝试访问chrome下载页面上的元素时,硒给我一个错误(chrome: //下载)。
例如,我尝试获取文件URL http://file.jpg

 < a id =urltarget =_ blankhref =http://file.jpg> http:/ /file.jpg</a> 

但是,当我试图通过它的id获取元素时,我得到一个异常。



代码:

 驱动程序= webdriver.Chrome(chromedriver.exe)
driver.get(chrome:// downloads /)
file_url = driver.find_element_by_id(url)。get_attribute(href)
 追踪(最近最后一次调用最后一次):$(pre 

) b $ b文件< pyshell#34>,第3行,位于< module>
driver.find_element_by_id(url)
文件D:\Python\lib\site-packages\selenium\webdriver\remote\webdriver.py,第269行, in find_element_by_id
return self.find_element(by = By.ID,value = id_)
文件D:\Python\lib\site-packages\selenium\webdriver\remote\\ \\ webdriver.py,第752行,在find_element
'value'中:value})['value']
文件D:\Python\lib\site-packages\selenium\\ \\webdriver\remote\webdriver.py,第236行,执行
self.error_handler.check_response(响应)
文件D:\Python\lib\site-packages\ selenium\webdriver\remote\errorhandler.py,第192行,in check_response
raise exception_class(message,screen,stacktrace)
selenium.common.exceptions.NoSuchElementException:消息:no such element:无法找到元素:{method:id,selector:url}
(会话信息:chrome = 56.0.2924.87)
(驱动程序信息:chromedriver = 2.27.440174(e97a722caafc2d3a8b807ee115bfb307f7d2cfd9),platform = Windows NT 10.0.10586 x86_64)

使用javascript通过 driver.execute_script()也不适用于我。
为什么当我在浏览器中看到元素时,我得到 NoSuchElementException

解决方案

目标链接位于几个 shadow-root 块内。尝试下面的代码:

  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)

如有任何问题,请告知我。如果它解决了您的问题,请不要忘记将此答案标记为接受


I use selenium with the chromedriver in python.

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>

But as i try to get the element by its id I get an exception.

Code:

driver = webdriver.Chrome("chromedriver.exe")
driver.get("chrome://downloads/")
file_url = driver.find_element_by_id("url").get_attribute("href")

Exception:

Traceback (most recent call last):
  File "<pyshell#34>", line 3, in <module>
    driver.find_element_by_id("url")
  File "D:\Python\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 269, in find_element_by_id
    return self.find_element(by=By.ID, value=id_)
  File "D:\Python\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 752, in find_element
    'value': value})['value']
  File "D:\Python\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 236, in execute
    self.error_handler.check_response(response)
  File "D:\Python\lib\site-packages\selenium\webdriver\remote\errorhandler.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)

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?

解决方案

Target link located inside several shadow-root blocks. Try below code:

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")

Let me know in case of any issues. Don't forget to mark this answer as Accepted if it solved your issue.

这篇关于Selenium webdriver无法在chrome下找到元素:// downloads的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆