【问题标题】:Setting up selenium, chromedriver, and wdio mixed with vagrant or docker设置 selenium、chromedriver 和 wdio 与 vagrant 或 docker 混合
【发布时间】:2024-04-25 04:25:02
【问题描述】:

我开始尝试学习如何为一个小项目编写自动化测试,但没有什么是开箱即用的。经过几个小时的搜索和试验,我为我的项目找到了正确的配置,并认为分享它可能会对未来的人们有所帮助。

以下是我在调试过程中遇到的错误的小总结:

  • 使用 Jasmine 和 WDIO,send_keys 崩溃了
    • 这是一个 Firefox/geckodriver 错误,或类似的错误
  • 从 Firefox 切换到 Chrome 后,WDIO 似乎挂起
    • 本质上,Chrome 需要在 --no-sandbox 模式下运行

我认为我的问题可能源于让 WDIO 在我的本地机器上执行我的测试,而 Selenium 在 Vagrant VM 中对浏览器进行锤击。因此,这主要适用于为 WDIO 和 Selenium/Chromedriver 使用单独环境(vagrant->local、vagrant->vagrant、docker->local 等)的人。 Here is a gist of the configuration file I ended up with.

【问题讨论】:

    标签: selenium vagrant selenium-chromedriver webdriver-io


    【解决方案1】:

    我从fanatique/vagrant-selenium-vm 开始,并将其修改为使用Chrome 而不是Firefox because send_keys was broken with Firefox/geckodriver at the time of writing。换出软件包后,我会用 wdio 开始测试,但它似乎会挂起。打开详细日志记录显示它尝试启动但失败但没有解释原因。

    [00:06:39]  COMMAND POST     "/wd/hub/session"
    [00:06:39]  DATA        {"desiredCapabilities":{"javascriptEnabled":true,"locationContextEnabled":true,"handlesAlerts":true,"rotatable":true,"browserName":"chrome","loggingPrefs":{"browser":"ALL","driver":"ALL"},"requestOrigins":{"url":"http://webdriver.io","version":"4.6.2","name":"webdriverio"}}}
    

    需要从fanatique/vagrant-selenium-vmsetup.sh 中的nohup java ... 命令中删除& 才能实时查看来自Selenium 的日志,然后我才能看到来自chromedriver"only local connections are allowed" 消息.这使我找到了a SO post,据说将--whitelisted-ips="" 作为arg 添加到chromedriver - 但我仍然收到本地连接 错误消息。 Chrome 本身最终需要一个 --no-sandbox 标志 - 它允许 WDIO 连接到 Selenium 中的 chromedriver,我的测试从那里运行。

    【讨论】: