python-3.x 在container中运行Selenium会导致之前没有的突然 selenium 错误

myss37ts  于 2023-01-14  发布在  Python
关注(0)|答案(2)|浏览(125)

每当我在电脑上运行测试时,它们都运行得相对较好。至少, selenium 运行起来没有问题。
当我在Docker容器上运行相同的测试时,我开始运行Selenium引发的各种错误,例如:“元素在点...处不可单击"、“元素不可交互..."等。
当我在计算机上正常运行测试时,这些都没有发生。
我有一台Linux Debian 9计算机,Docker 1.11,Chrome 72.0,Chrome驱动程序2.41, selenium 3.12。测试是用py.test和无头Chrome完成的。
我的Dockerfile很简单,安装python的所有软件包,把我的测试放在那里运行,我运行的是定制的Dockerfile,没有使用预制的seleniumHQ的选项。
我第一次尝试运行演示测试时遇到了这个问题。我设法通过编辑测试代码来绕过异常并再次尝试来解决它。成功后,我尝试运行一些更复杂的测试,并不断遇到我以前从未遇到过的不同错误。
我找到的每一个解决方案都是为了解决抛出的异常,但我怀疑还有更深层次的问题,我不知道是什么。
重申:在我的计算机上运行测试(包括headless和其他)非常有效,但是在docker容器中运行相同的测试失败,并抛出几个selenium错误。由于某种原因,测试似乎无法正常运行,并且selenium不断抛出错误。
我已经试着解决它有一段时间了,似乎不能找出问题是什么。
我想知道为什么会出现这个问题,以及如何解决它的根本原因。如果这是一个已知的问题,解决方案确实是简单地解决每一个例外,因为它来了,我也想知道。

fnvucqvd

fnvucqvd1#

就我所能找到的,以及我解决这个问题的方法,就是遵循异常并在它们出现时修复它们。
我遇到的常见问题是按钮/文本框上的单击事件和从文本框中清除文本。
解决方案包括:

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

从我的立场来看,这些解决了大部分,如果不是所有的突然异常和其余的工作如预期。

sy5wg1nm

sy5wg1nm2#

我在使用chromedriver运行Selenium时遇到过类似的问题,突然元素不可点击,在页面上不可见等。解决方案是通过向Chrome参数添加--disable-dev-shm-usage来禁用/dev/shm。

相关问题