0

所以这让我很困惑。

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

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

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

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

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

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

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

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

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

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

4

2 回答 2

0

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

此致

于 2018-07-11T08:57:44.453 回答
0

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

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

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

此外,如果您查看chrome driver mobile emulation 的文档,第一行会提到如下

Note that Mobile Emulation is subject to this known issue.

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

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

于 2018-08-20T13:18:00.190 回答