【问题标题】:Selenium intermittent click in emulatorSelenium 在模拟器中间歇性点击
【发布时间】:2018-07-11 08:51:27
【问题描述】:

所以这让我很困惑。

我们有一个使用 Selenium、Specflow 和 C# 的测试框架。目前正在运行 Selenium 3.13.1(昨天刚刚升级,看看旧版本(3.11.2)是否是问题所在)

问题(仅当在 Chrome 中模拟移动设备时):

当在本地运行测试一切正常时,单击按钮并且测试通过。 在 Jenkins slave 上远程运行测试时,它有时会工作。即有时我得到点击,有时我没有。 当作业按计划运行时,一些测试始终失败(这些测试在本地运行时运行良好)。

我尝试添加 5 秒的睡眠,但这没有帮助。

确实有效的一件事是将 Click() 更改为 SendKeys(Keys.Enter)。

执行 javascript 来点击按钮也很有效,但是我不希望从点击中改变,原因有两个。 1. 这是最接近模拟用户输入的操作,并且 2. 这在本地运行良好。

Jenkins slave 上的 Chrome 版本与我的本地版本 (67.0.3396.99) 一致,Chrome 驱动程序也是内联的 (2.40.565498)。

Chrome 驱动程序昨天更新了,因为我尝试了 2.38 和 2.39 版本,但无济于事。

有没有人遇到过这个问题并找到了解决方案?

附:在不在移动仿真中运行测试时,我在本地或 Jenkins 上的点击都没有问题。

【问题讨论】:

    标签: c# jenkins selenium-webdriver mobile-emulator


    【解决方案1】:

    我有同样的问题。 在我的浏览器中允许弹出窗口后,单击和 clickAndWait 事件工作正常。 或许你也可以换个浏览器。

    最好的问候

    【讨论】:

    • 我已经有了 Chrome 的以下选项options.AddArguments("--disable-popup-blocking");
    【解决方案2】:

    对于遇到此问题的任何人,这是目前当前的相关答案。

    这不是我们使用的框架的问题,而是铬和铬驱动程序的问题。

    问题/错误链接可以在here 找到(这是下面引用的已知问题)。

    另外,如果你检查documentation for chrome driver mobile emulation,它在第一行提到如下

    Note that Mobile Emulation is subject to this known issue.
    

    这个答案本身无助于解决问题,但给出了它发生的原因。我发现的“最佳”解决方法是使用 JS 点击等等。在我们的案例中,我们暂时停止使用移动仿真,因为使用 JS 进行点击并不能真正模拟真正的点击。随着新版本的 Chrome 和 ChromeDriver 发布,我会不断更新,直到有修复程序为止。

    希望你浪费的时间比我四处寻找答案的时间要少:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-07
      • 1970-01-01
      • 1970-01-01
      • 2021-11-23
      • 2017-06-11
      • 1970-01-01
      • 1970-01-01
      • 2014-02-16
      相关资源
      最近更新 更多