当前位置: 首页 > 知识库问答 >
问题:

Selenium未定位xpath元素

辛可人
2023-03-14
======================================================================
ERROR: testSearch (__main__.InitialSearch)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/Josh/PycharmProjects/ideqcomps/test.py", line 33, in testSearch
    lambda driver: driver.find_elements_by_xpath(downloaded_file_XPath))
  File "/Users/Josh/Library/Python/3.6/lib/python/site-packages/selenium/webdriver/support/wait.py", line 80, in until
    raise TimeoutException(message, screen, stacktrace)
selenium.common.exceptions.TimeoutException: Message: 


----------------------------------------------------------------------
Ran 1 test in 24.415s

FAILED (errors=1)

Process finished with exit code 1
from selenium import webdriver

from selenium.webdriver.support.ui import WebDriverWait

import unittest


class InitialSearch(unittest.TestCase):

    def setUp(self):
        options     = webdriver.ChromeOptions()
        self.driver = webdriver.Chrome(chrome_options=options)
        self.driver.get("https://wetransfer.com/downloads/5451e039a782938826861676664ae91a20171227191356/a45960")

    def testSearch(self):
        driver                   = self.driver
        download_button_xpath    = '//*[@id="file-link"]'
        agree_xpath              = '//*[@id="5451e039a782938826861676664ae91a20171227191356"]/div/div[2]/button'
        downloaded_file_xpath    = '//*[@id="downloads-list"]/downloads-item[1]'
    # Click on agree to terms button
        agree_element = WebDriverWait(driver, 10).until(
            lambda driver: driver.find_element_by_xpath(agree_xpath))
        agree_element.click()
    # Click on download button
        download_button_element = WebDriverWait(driver, 10).until(
            lambda driver: driver.find_element_by_xpath(download_button_xpath))
        download_button_element.click()
    # Go to downloads
        self.driver.get("chrome://downloads/")
    # Click on first item in downloads
        open_pdf_element = WebDriverWait(driver, 10).until(
            lambda driver: driver.find_element_by_xpath(downloaded_file_xpath))
        open_pdf_element.click()


if __name__ == '__main__':
    unittest.main()

共有1个答案

宦翔飞
2023-03-14

我从来没有用selenium点击Chrome://下载/的元素,我不知道这是否可能。我会把这个留给这里的专家。

话虽如此,如果你最终改变了打开下载pdf的方式,你可以尝试下面的方法

options = webdriver.ChromeOptions()
options .add_experimental_option("prefs", {
    "download.default_directory": '<temp_download_dir>',
    "download.prompt_for_download": False,
    "download.directory_upgrade": True,
    "safebrowsing.enabled": True
})

这将迫使chrome将pdf下载到temp_download_dir,从那里您可以打开该文件

 类似资料:
  • 我试图引用并单击网页上的元素。 我们应该能够使用简单的XPath进行引用。例如 然而,这似乎并不奏效。 我使用的chrome扩展表示该元素不存在。 我的代码找不到元素。 下面是我使用Selenium web驱动程序的Java代码。 以下是错误: 太奇怪了!关于为什么我不能引用元素,或者为什么xPath不exist的任何想法。

  • 你知道为什么吗?

  • 我试图通过selenium单击save按钮,但是,我得到的错误是它无法定位元素。 这是网站的html部分 这是我得到的错误: NoSuchelementException:没有这样的元素:找不到元素:{“method”:“id”,“selector”:“divflashviewermain_savepdfbuttonicon”} (会话信息:chrome=74.0.3729.169)(驱动程序信息

  • 下面是selenium找不到元素的代码。 但不知何故,它失败了,对我不起作用。它总是给我以下例外情况:过时的元素引用:元素未附加到页面文档 添加了--GetElementStextList的代码 感谢任何帮助。谢谢

  • 本文向大家介绍python selenium xpath定位操作,包括了python selenium xpath定位操作的使用技巧和注意事项,需要的朋友参考一下 xpath是一种在xm文档中定位的语言,详细简介,请自行参照百度百科,本文主要总结一下xpath的使用方法,个人看法,如有不足和错误,敬请指出。 注意:xpath的定位 同一级别的多个标签 索引从1开始 而不是0 1. 绝对定位: 此方

  • 嗨,我是一个相当新的硒。可以有人请建议如何定位和元素在iframe asi是得到错误下面。 带有Iframe标记的DOM按钮元素的屏幕截图 以前编写的代码