代码之家  ›  专栏  ›  技术社区  ›  David

Selenium间歇点击模拟器

  •  0
  • David  · 技术社区  · 6 年前

    所以这让我很困惑。

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

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

    当本地运行测试都正常时,单击按钮并通过测试。 当在Jenkins从系统上远程运行测试时,它有时会工作,即有时我会点击,有时我不会。 当作业按计划运行时,某些测试会一直失败(这些测试在本地运行时运行得很好)。

    我试过增加5秒的睡眠时间,但这没有帮助。

    有一件事是将click()更改为sendkeys(keys.enter)。

    执行javascript来单击按钮也可以很好地工作,但是我不希望因为两个原因而从单击更改。1。这是模拟用户输入和2的最接近的操作。这在当地很有效。

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

    自从我尝试使用2.38和2.39版后,Chrome驱动程序昨天已经更新了,但没有任何效果。

    有人遇到这个问题并找到解决方案吗?

    另外,在运行非移动仿真的测试时,本地或Jenkins上的单击都没有问题。

    2 回复  |  直到 6 年前
        1
  •  0
  •   mipoprog    6 年前

    我也有同样的问题。 允许在浏览器中弹出后,单击并单击等待事件可以正常工作。 也许你也可以改变浏览器。

    顺祝商祺!

        2
  •  0
  •   David    6 年前

    对于任何有此问题的人,这是当前相关的及时回答。

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

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

    如果您检查 documentation for chrome driver mobile emulation ,第一行提到如下

    Note that Mobile Emulation is subject to this known issue.
    

    这个答案本身并不能帮助解决问题,但给出了问题发生的原因。我发现的“最佳”解决方法是使用JS单击等等。在我们的例子中,我们现在停止使用移动仿真,因为用JS点击并不能真正模拟真正的点击。随着Chrome和Chromedriver的新版本的真正简化,我将不断更新,直到有了修复。

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