【问题标题】:Using selenium chromedriver with python在 python 中使用 selenium chromedriver
【发布时间】:2018-10-21 02:39:22
【问题描述】:

我已经在我的环境变量中安装了 python 2.7 和 pip。我还在我的 python 路径中安装了 selenium。现在我正在尝试使用 PyCharm 创建一个 selenium 脚本。我的简单代码是这样的:

from selenium import webdriver

import time

driver = webdriver.Chrome(r"C:\Users\Path_to_driver\chromedriver.exe")

driver.set_page_load_timeout(40)

driver.get("http://www.facebook.com")
time.sleep(1)

driver.find_element_by_name("email").send_keys("abc@abc.com")
time.sleep(1)
driver.find_element_by_name("pass").send_keys("abcd")
time.sleep(1)
driver.find_element_by_id("loginbutton").click()

time.sleep(4)

driver.quit()

我在运行代码时遇到错误。我已经三重检查了 webdriver 路径等,我还尝试从 python IDLE 运行它。但我收到如下所示的错误:

Traceback (most recent call last):
  File "C:/Users/Administrator/PycharmProjects/test/Test/test1.py", line 5, in <module>
    driver = webdriver.Chrome(r"C:\Users\Path_to_driver\chromedriver.exe")
AttributeError: module 'selenium.webdriver' has no attribute 'Chrome'

我不知道我做错了什么。我在互联网上阅读了很多文章,但似乎没有解决方案可以解决我的问题。

【问题讨论】:

  • 如果这是一个真实的密码,你应该尽快更改它
  • @DeliriousLettuce OMG 兄弟感谢您指出这一点。这可能是一个错误!

标签: python python-2.7 selenium automation selenium-chromedriver


【解决方案1】:

在实例化 webdriver 时删除路径。如果它在你的路径中,它会找到它。

from selenium import webdriver
import time
driver = webdriver.Chrome() # Optional argument, if not specified will search path.
driver.set_page_load_timeout(40)

http://chromedriver.chromium.org/getting-started

【讨论】:

    【解决方案2】:

    此错误消息...

    driver = webdriver.Chrome(r"C:\Users\Administrator\Desktop\arpit\automation\chromedriver_win32\chromedriver.exe")
    AttributeError: module 'selenium.webdriver' has no attribute 'Chrome'
    

    ...暗示 Python 脚本 无法访问 webdriver 模块。

    根据最佳实践,您需要遵循以下几点:

    • 始终将 Key executable_pathValue 一起指定为 ChromeDriver绝对路径单反斜杠 ie \ 内单引号 ie '.....' 以及原始 ie r 开关如下:

      driver = webdriver.Chrome(executable_path=r'C:\Users\Administrator\Desktop\arpit\automation\chromedriver_win32\chromedriver.exe')
      
    • 尝试以非root用户身份执行@Tests

    【讨论】:

      【解决方案3】:

      无需在代码中明确提供驱动程序路径。只需将驱动程序路径也放入路径环境变量中。 Python 会自动检测到它。

      此外,建议始终尝试在虚拟环境中工作,以便项目安装不会干扰全局库。

      类似 virtualenv 的 python 库可以用于此目的。

      代码 sn-p :-

      def main():
      
          global driver
      
         # Create a instance of Chrome browser
      
          driver = webdriver.Chrome()
      
        call your function here
      
        # exit the browser
      
         driver.quit(
      

      【讨论】:

      • 为什么要使用全局变量?
      • 这样您也可以在函数中使用驱动程序变量。
      • 我认为你没有抓住重点,global variables should be avoided,这里没有必要使用一个。
      • 是的,您可以在某种程度上说,但在我的用例中,它满足了需求。但是,您可以在顶部声明您希望的。希望解决方案对您有用。
      • 除了不必要的全局变量之外,您的解决方案甚至无法运行。另外,我没有问这个问题。
      猜你喜欢
      • 1970-01-01
      • 2021-06-11
      • 2017-02-09
      • 2023-01-28
      • 2017-04-24
      • 1970-01-01
      • 2019-11-13
      • 2021-09-14
      相关资源
      最近更新 更多