【问题标题】:Can I use Selenium (webdriver) for Chrome without using chromedriver.exe?我可以在不使用 chromedriver.exe 的情况下将 Selenium (webdriver) 用于 Chrome 吗?
【发布时间】:2015-07-20 07:50:59
【问题描述】:

我一直在尝试以可以将 Selenium 纳入测试的方式来研究它。我已经阅读并观看了一些教程,它基本上需要使用 chromedriver.exe 设置为 webdriver.chrome.driver 属性。但是,我们的公司政策限制我们使用/执行 exe 文件。结果,当我尝试我的 Selenium chrome 代码时,我收到一个错误,即尝试执行的 exe 未经授权。

所以我的问题是,有什么方法可以将 Selenium 用于 chrome 而无需使用 chromedriver.exe?如果您知道文档、教程甚至 youtube 指南的链接,请告诉我。谢谢!

【问题讨论】:

  • 如果你想使用 chrome 启动 selenium webDriver,首先你应该为 chrome 设置属性。否则你会得到 IlegalStateException。

标签: google-chrome selenium selenium-webdriver selenium-chromedriver


【解决方案1】:

如果它是基于 maven 的项目,并且您使用的是最新版本的 selenium-chrome-driver 和 webdrivermanager,您可以尝试在 pom.xml 中使用以下依赖项

    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-chrome-driver</artifactId>
        <version>3.141.59</version>
    </dependency>
    <dependency>
        <groupId>io.github.bonigarcia</groupId>
        <artifactId>webdrivermanager</artifactId>
        <version>3.7.1</version>
    </dependency>

使用 WebDriverManager,

    WebDriverManager.chromedriver().setup();
    WebDriver driver = new ChromeDriver();
    driver.get("http://google.com");  

【讨论】:

    【解决方案2】:

    如果您的项目是基于 Maven 的,您可以添加以下依赖项。这有 ChromeDriverManager 类,它负责处理 chromedriver 二进制文件,并维护最新版本的二进制文件,减少手动维护驱动程序 exe 文件的手动工作。

    <dependency>
                <groupId>io.github.bonigarcia</groupId>
                <artifactId>webdrivermanager</artifactId>
                <version>1.7.2</version>
                <scope>test</scope>
    </dependency>
    
    ChromeDriverManager.getInstance().setup();
    driver = new ChromeDriver();
    driver.get("http://www.google.co.in");
    

    我最近尝试过这个,但仍然需要评估利弊。如果获得更多信息,请提及您的优点/缺点。 谢谢。

    【讨论】:

      【解决方案3】:

      我相信不使用 chromedriver.exe 就无法在 Selenium 中使用 chrome 浏览器。这同样适用于 Internet Explorer。

      但是,如果您确实被禁止使用 .exe 文件,那么在 Firefox 中执行您的测试脚本会很有帮助。您需要做的就是添加以下代码:

      driver = new FirefoxDriver();
      

      对于 Firefox,无需引用任何 .exe 文件。希望这会有所帮助!

      更新:在 Selenium 3 之后,甚至 Firefox 也需要 geckodriver。

      【讨论】:

      • 当我尝试这样做时,我收到一个错误,即 firefox 确实需要驱动程序。 OpenQA.Selenium.DriverServiceNotFoundException: The geckodriver.exe file does not exist in the current directory or in a directory on the PATH environment variable
      • 哦,Selenium 3 中的 firefox 似乎不再包含在内。
      • 对于 Selenium 3.0,所有浏览器都需要一个服务器组件。唯一的选择是让您的公司将此 exe 列入名单并允许下载。
      【解决方案4】:

      不,你不能。您可以提供 chrome present 安装文件夹的内置 exe 路径,也可以提供 chrome exe 路径。由于 selenium 仅支持 firefox 作为内置功能。

      【讨论】:

      • 嗨 Ketan,我已经安装了 google chrome,并且可以运行 chrome.exe。但是,我无法运行 chromedriver.exe。还能用吗?
      • @learning_dev_me,不,如果你想在chrome浏览器上工作,你需要使用chromedriver.exe。
      【解决方案5】:

      不,你不能在不使用 chromedriver.exe 的情况下将 selenium 用于 chrome 浏览器

      【讨论】:

        【解决方案6】:

        这可能不是一个好的做法,但您可以使用 AutoIT 来做到这一点。使用项目中的 Runtime 类启动 chrome 浏览器和 AutoIT 代码。

        AutoIT 代码:

        winwait("title","","10")
        If winexist("title") Then
           winactivate("title")
        endif
        

        【讨论】:

          【解决方案7】:

          可以,无需下载chromedriver.exe文件即可使用

          pip install webdriver-manager
          
          from selenium import webdriver
          from webdriver_manager.chrome import ChromeDriverManager
          
          driver = webdriver.Chrome(ChromeDriverManager().install())
          

          更多信息请访问官方网站。

          https://pypi.org/project/webdriver-manager/

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-06-22
            • 1970-01-01
            • 2019-12-17
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多