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

为什么使用Python的Selenium webdriver无法访问网站

伊富
2023-03-14

我正在尝试使用与chrome驱动程序selenium连接到一个网站。但联系不上。下面是我的代码:

    from selenium import webdriver
    from selenium.webdriver.common.by import By
    
    CHROME_EXECUTABLE_PATH = "C://Program Files (x86)//Chrome Driver//chromedriver.exe"
    CHROME_OPTIONS = webdriver.ChromeOptions()
    CHROME_OPTIONS.add_argument("--disable-notifications")
    BASE_URL = "https://www.nordstrom.com/"
    driver = webdriver.Chrome(executable_path=CHROME_EXECUTABLE_PATH, options=CHROME_OPTIONS)
    # locators
    search_button_locator = "//a[@id='controls-keyword-search-popover']"
    search_box_locator = "//*[@id='keyword-search-input']"
    
    driver.get(BASE_URL)
    driver.find_element(By.XPATH, search_button_locator)
    driver.find_element(By.XPATH, search_box_locator).send_keys("Fave Slipper")

这段代码给了我一些错误:

E:\Python\Nordstrom.com\venv\Scripts\python.exe E:/Python/Nordstrom.com/pages/simple.py
Traceback (most recent call last):
  File "E:\Python\Nordstrom.com\pages\simple.py", line 14, in <module>
    driver.find_element(By.XPATH, search_button_locator)
  File "E:\Python\Nordstrom.com\venv\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 976, in find_element
    return self.execute(Command.FIND_ELEMENT, {
  File "E:\Python\Nordstrom.com\venv\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "E:\Python\Nordstrom.com\venv\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//a[@id='controls-keyword-search-popover']"}
  (Session info: chrome=94.0.4606.61)


Process finished with exit code 1

页面如下所示:

但预期的页面应该如下所示:

如何访问本网站

共有1个答案

岳杜吟
2023-03-14

错误指出它无法找到XPATH元素,这就是它出错的原因。

造成这种情况的主要原因可能是:

  • XPATH错误
  • 该元素尚未加载到页面上
  • 站点检测到您的刮擦尝试并阻止您
 类似资料:
  • 目标图片:https://img.alicdn.com/imgextra/O1CN01MW6Bpi1KJXbwTYrw5_!!2216508591143.jpg 发现这个图片可以直接在浏览器打开,在我的 mac 上也可以使用 wget 直接下载 但是因为我的服务是部署在 aliyun 的 ack,但是我发现在 aliyun ack 访问这个图片居然就是 420 ! 写了下面的测试代码 上面的代码,

  • 问题内容: 对象a2的类型为A,但引用了类C的对象。因此,a2应该能够访问m3()。但是,为什么不发生呢?如果在类A中定义了m3()方法,则代码可以正常运行 问题答案: 这意味着您只能访问Class的成员和Class的实现(如果有的话)。 现在m3不是的成员。清楚吗?

  • 现在我正试图通过和但该网站不可用。

  • 我有一个aws lambda函数,它返回以下响应: 但是我在前端角度应用程序中得到以下误差。 CORS策略阻止从来源“HTTP://127.0.0.1:8080”访问位于“https://xxxxxxxxx.execute-api.us-east-1.amazonaws.com/dev/price”的XMLHttpRequest:对飞行前请求的响应没有通过访问控制检查:它没有HTTP ok状态。

  • 问题内容: 我在运行以下代码时遇到问题: 从Junit @Before方法中。 这是Maven建立目标文件夹的方式吗? 问题答案: 直接访问。该目录内容被放置在你的CLASSPATH的根。 更准确地说:的内容被复制到中,因此,如果您具有以下项目结构: 它将得到以下测试CLASSPATH内容: 要实际从Java源访问文件,请使用 。

  • 问题内容: 有什么原因不能在Internet Explorer或Chrome上运行: 我单击的链接永远不会正常,只会保持粗体。在其他 一些 浏览器上也可以。 编辑 :更改大小写不影响它。 编辑 :将a更改为a:link不会影响它。 编辑 :更改颜色的作品,但不是字体粗细。 编辑 :解决方法是更改​​可访问性以忽略网页颜色。我没有访问源的权限,所以我必须这样做。 问题答案: 实际上,这与大小写无关。