如果测试用于:
,并行运行多个selenium实例的最佳方法是什么?我已经读过这个:https://code.google.com/p/selenium/wiki/ScalingWebDriver并且似乎存在关于在同一台机器上运行多个Selenium实例的系统性问题。但是我想问一下社区是否有一种我没有看到的方式。
我有一个工作的selenium实例运行e2e测试。但是,我现在想使用相同的浏览器类型并行运行其中5个selenium实例。
我已经查看了Selenium Grid 2,我不确定它是否适合我的用例。似乎Selenium Grid 2的主要观点是能够根据浏览器版本/操作系统分发测试。但就我而言,每个测试都是针对相同类型,相同的浏览器版本。
运行独立测试非常有效!
但是当我尝试通过生成多个Firefox进程进行扩展时,我得到的错误主要涉及HTTP和requests
错误,包括BadClient
和StatusError
以及Exception: Request cannot be sent
:< / p>
webdriver.Firefox()
我已经挖掘了webdriver.Firefox()
代码,它看起来像在幕后,它在本地连接:
class WebDriver(RemoteWebDriver):
def __init__(self, firefox_profile=None, firefox_binary=None, timeout=30, capabilities=None, proxy=None):
...
RemoteWebDriver.__init__(self,
command_executor=ExtensionConnection("127.0.0.1", self.profile, self.binary, timeout))
RemoteWebDriver实例似乎只是在找到的空闲端口上连接到localhost。这似乎是Grid在注册节点时使用的相同命令:
java -jar selenium-server-standalone-2.44.0.jar -role node -hub http://localhost:4444/grid/register
Grid是否与在相同的计算机上运行并行Selenium实例有任何关联?或者它主要是在各种不同机器上运行的实例的负载均衡器?
是否可以在相同的机器上并行运行可靠的,非片状的Selenium实例?我并行运行时会出现HTTP flakiness(无法发送大量请求或Bad Status Error或浏览器关闭之前可以从socket读取信息)
Selenium Grid 2的重点是什么?它是否只是作为多台机器上并行测试运行的负载平衡器?如果我在本地运行网格与同一台机器上的集线器和节点(全部用于FF),它是否与我运行多个webdriver.Firefox()
进程实际上相同?
或者幕后有更多的魔力吗?