【问题标题】:is there a way to avoid the hardcoded path for chromedriver in karate [duplicate]有没有办法避免空手道中chromedriver的硬编码路径[重复]
【发布时间】:2021-03-23 10:36:18
【问题描述】:

在下面的代码中,我想在空手道中使用 chromedriver

但不想给出硬编码路径 C:\Software\chromedriver_win32\chromedriver.exe

原因:- 其他团队成员可能不在同一路径上拥有 chromedriver。

Feature: Check to open both browser

 Scenario: open chrome with chromeDriver
* configure driver = {type:'chromedriver' , executable:'C:\\Software\\chromedriver_win32\\chromedriver.exe'}
* driver 'https://www.google.com'

有什么方法可以自动处理?以便通过 ma​​ven 下载它,然后 Karate 将其拾取。

而不是我们手动下载它(chromedriver/geckodriver)并放入相对文件夹(在项目中)或系统文件夹中

我已经阅读了documentation,它说它在 Windows 的系统 PATH 或我们提供的路径中搜索。

我可能遗漏的任何内容请纠正我。

【问题讨论】:

    标签: karate


    【解决方案1】:

    大多数团队使用PATH 默认值,因为它更容易在每台机器上进行自定义。

    但是,如果您希望空手道通过 Maven 或类似的方式自动下载驱动程序,很抱歉,这不受支持,也从未计划过。

    也许你应该看看WebDriverManager - 只需将它添加到你的依赖项并使用它,应该很简单。

    另外你应该花点时间了解一下空手道的配置系统:https://github.com/intuit/karate#configuration

    所以假设你有以下karate-config.js:

    function fn() {
      return { executable: 'C:/some/dir/chromedriver.exe' }
    }
    

    现在在任何功能文件中,变量executable 将被设置并可供使用。

    * configure driver = { type:'chromedriver', executable: '#(executable)' }
    

    也看看这个答案:https://stackoverflow.com/a/60581024/143475

    你可以研究空手道用于 CI 的项目

    另见:https://stackoverflow.com/a/68821168/143475

    【讨论】:

    • 谢谢@Peter Thomas。 1)我使用过 Webdrivermanager ,它可以以某种方式用于空手道吗?我不想下载空手道,但如果它可以读取项目文件夹 2) 我是否将 C:/some/dir/chromedriver 放在配置文件中.. 它是同一件事.. 路径仍然是硬编码的 3) 我关心的是什么时候它将通过 CI 在构建代理上运行,它会在其中找到 chromedrive,因为它将在远程服务器上运行。 (我试图理解你对 CI 的最后一点)它是如何工作的。对这一点有任何详细的解释吗?
    • @Gauravkhurana 抱歉,没有CI的详细解释,您必须阅读文档然后阅读代码才能理解。正如我所说,集成 webdrivermanager 是您的责任,我没有示例 - 但如果您使用过它,您应该可以轻松编写 JUnit @BeforeClass 钩子以确保它在您的任何空手道之前位于正确的目录中测试运行。然后你可以将它传递给空手道配置,这样你就不必硬编码:)
    猜你喜欢
    • 2011-01-07
    • 1970-01-01
    • 1970-01-01
    • 2021-12-15
    • 2020-12-02
    • 2022-11-16
    • 2012-06-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多