当前位置: 首页 > 面试题库 >

Selenium Webdriver在chrome:// downloads上找不到元素

松钟展
2023-03-14
问题内容

我在python中将selenium与chromedriver一起使用。

我的问题是selenium导致我尝试访问chrome下载页面(chrome:// downloads)上的元素时出现错误。例如,我尝试获取文件URL“
http://file.jpg ”。

<a id="url" target="_blank" href="http://file.jpg">http://file.jpg</a>

但是当我尝试通过其ID获取元素时,出现了异常。

码:

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:\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)

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


 类似资料:
  • 我正在尝试使用Java中的selenium web驱动程序测试搜索UI 如果我单击result,它会显示该结果的一些属性。 所以现在当我单击第一个结果时,webdriver可以通过 还尝试了 但是当webdriver单击第二个结果时,它会显示它们的属性,但是webdriver无法找到属性(与第一个结果具有相同的类名)。 我用这个点击结果- 其中是结果号 *此处的堆栈跟踪 org.openqa.se

  • 我尝试了这些方法,甚至放置等待,但仍然没有找到元素:

  • 我对在Selenium中使用python还很陌生。

  • 我对硒世界还很陌生。我一直在用这个代码打开一个基本的facebook页面,它不断地抛出一个错误: 在端口8852上启动ChromeDriver 78.0.3904.105(60E2D8774A8151EFA6A00B1F358371B1E0E07EE2-refs/branch-heads/3904@{#877})只允许本地连接。请保护ChromeDriver和相关测试框架使用的端口,以防止恶意代码

  • 问题内容: 我的网站上有一个选择控件。我正在使用页面对象与页面进行交互。如果我这样做(在我的课程下的前两行和我的方法中) 它以空指针失败。我也尝试了没有。 现在,如果我在我的方法中执行此操作,则一切正常,然后选择正确的项目 这是该控件的实际网页摘要(已编辑以保护无辜者) 让我说我可以解决我的问题, 但是 我不明白为什么“ 正常 ”路径无法正常工作。 问题答案: 那是因为该类具有以下构造函数: 见J