运行 容器中的 Selenium 带来了突然的 selenium 错误,之前有 none

Running Selenium in container brings sudden selenium errors where there were none before

每当我 运行 在我的计算机上进行测试时,它们都运行良好。至少,selenium 运行没有问题。

一旦我 运行 在 docker 容器上进行相同的测试,我就开始 运行 处理 selenium 开始抛出的各种错误,例如:"Element not clickable at point...", "Element is not interactable...", 等等

None 这些发生在我 运行 在我的计算机上正常测试时。

我有一台 Linux Debian 9 计算机,docker 1.11,Chrome 72.0,chrome驱动程序 2.41,selenium 3.12。测试是使用 py.test 和无头 chrome.

完成的

我的 Dockerfile 很简单,安装 python 的所有包并将我的测试放在那里,然后 运行 安装它们。我 运行 一个定制的 Dockerfile,没有使用预制 seleniumHQ 的选项。

我首先尝试 运行进行演示测试,这是我第一次遇到该问题。我设法通过编辑测试代码绕过异常并重试来解决它。成功后,我尝试了 运行ning 一些更复杂的测试,并 运行ning 遇到了以前 运行 没有遇到过的不同错误。

我找到的每个解决方案都旨在解决抛出的异常,但我怀疑手头有更深层次的问题,我无法弄清楚它是什么。

重申一下:运行在我的计算机上进行测试(无论是无头的还是其他方式)就像一个魅力,但是 运行在 docker 容器中进行相同的测试失败了几个抛出硒错误。出于某种原因,测试似乎没有 运行 正确并且 selenium 不断抛出错误。

我已经尝试解决了一段时间,但似乎无法弄清楚问题所在。

我想知道为什么会出现这个问题以及如何解决它的根本原因。如果这是一个已知问题并且解决方案确实只是简单地解决所有出现的异常,我也想知道。

据我所知,我是如何解决这个问题的,就是跟踪异常并在它们出现时修复它们。

我遇到的一般问题是 buttons/textbox 上的点击事件和清除文本框中的文本。

涉及的解决方案:

  • 调用 webdriver.execute_script('arguments[0].click();', 元素) 来替换按钮点击事件。
  • 调用 webdriver.execute_script('arguments[0].focus();', element) 来替换文本框点击事件。
  • 调用 webdriver.execute_script('arguments[0].value = "";', element) 替换文本框清除。

从我的角度来看,这些解决了大多数(如果不是全部)突然异常,其余的按预期工作。