在docker容器中运行Selenium测试会抛出“元素不可点击...”,但不会在容器外部抛出

时间:2019-06-02 12:42:33

标签: python selenium docker selenium-webdriver docker-container

我最近开始使用Selenium来测试我的Web应用程序。 在对我的计算机上使用硒进行测试(没有问题通过)后,我尝试在自定义Docker容器中运行相同的测试,但它只是开始抛出带有消息的WebDriverException:

Element <button ...> is not clickable at point (...). Other element would receive the click: <app-...>
 (Session info: headless chrome=72.0.3626.121)
 (Driver info: chromedriver=2.41.578700 (...), platform=Linux 3.16.0...)

这让我很困惑,因为正常运行测试时不会出现该问题(这不是在Docker容器上,而是在我的PC上)。即使在容器中,它也确实设法找到了登录按钮并单击它,但是事后查找任何内容都会引发上述异常。

在基本级别上,应用程序的构建方式如下: 您从登录屏幕开始。登录后,您可以通过按操作菜单按钮执行一些操作,该按钮会显示可用操作列表。这是问题开始的地方。

对于我制作的Dockerfile,这是一些非常基本的东西:

  • 安装任何必要的python软件包。
  • 安装依赖项目。
  • 安装Chrome并将chromedriver复制到容器中(两者与我的PC完全相同)。

我使用py.test运行测试。

我已经尝试了许多解决上述异常的解决方案,包括更改无头窗口的大小并等待直到“阻塞”元素消失而无济于事。我认为值得一提的一个关键细节是,“阻塞”元素实际上是我要单击的按钮的祖先元素:

<obstructing ...>
   // ...
   <button ...> </...>
   // ...
</ ...>

这让我难过了好几天了。我确定该解决方案非常简单,我在阅读如何与docker一起使用硒时错过了,但是我不知道它可能是什么。

0 个答案:

没有答案