因此,我正在尝试创建一个java程序,它使用Selenium自动化WebDriver来执行网站上的任务。目前,我正在将它用于工作,以便自动化一个恼人的任务,即用户必须将文件上传到我们的数据库。我已经成功地制作了一个自动化的程序,并为自己节省了几个小时的手工工作。
现在我正在尝试让程序在parallel中运行多个浏览器。我想这样做是为了加快上传文件的速度,因为大多数时间都是在等待页面加载时浪费的。
我已经用我的程序的一个更简单的版本测试了这一点,并通过使用自己的WebDrivers打开数十到数百个线程,成功地将简单任务的速度提高了2-10倍。
问题是,每当我运行超过1个的 WebDriver时,整个程序开始随机地崩溃,而在其他时候根本不工作。我尝试使用'PhantomJSDriver‘和最新的'PhantomJS.exe',但是有时它会起作用,而大多数时候它什么也不做。当它们并行运行时,同一个程序在一个驱动程序运行的情况下运行时会崩溃。
我一直在努力寻找发生这种情况的原因和绕过它的方法,但我还没有找到任何明确的东西可以使用。
如果可能的话,我该如何实现与Selenium并行的web浏览自动化呢?如果不能,我应该从哪里着手来实现这一点?
发布于 2013-06-26 09:05:30
这就是你需要的,它被称为"Selenium Grid“。
http://selenium-grid.seleniumhq.org/
发布于 2013-06-26 17:57:47
实际上,通过使用Grid,您可以使用同一台机器或多台机器(这里的机器指的是单独的计算机)并行地自动化测试。
我希望这个link will show you how to run a tests in parallel in same machine。
在上面给定的链接中,用户说要创建五个不同的程序来并行运行。如果您想并行运行单个程序,则只需使用TestNg or Junit触发多个实例即可。
这是并行运行测试的示例TestNg config code。这里我运行了两个线程。因此,它将在两个线程中调用给定类文件com.test.workflow.device.testcase20的TestNg @Test方法。
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite1" parallel="test" thread-count="2">
<test name="Testcase20" >
<classes>
<class name="com.test.workflow.device.testcase20"/>
</classes>
</test>
</suite>通过使用上述xml文件,您可以在使用网格的webdriver中实现并行性。
发布于 2013-06-28 16:08:17
您可以尝试使用Sahi http://sahi.co.in/。它可以并行运行浏览器的多个实例。
不过,看看Sahi是如何上传文件的。http://sahi.co.in/w/_setFile
https://stackoverflow.com/questions/17309289
复制相似问题