在工作中,我们在远程位置(browserstack)上运行自动化的selenium测试。这就是远程web驱动程序的示例化方式,这些测试也使用 testNG
项目的设置方式是每个测试将一个行号传递给 DriverInit
构造函数,然后将测试该行上的内容(代码中未显示该部分)。问题是我们没有钱在browserstack上运行100个并行测试,我们对此都不熟悉。
在阅读之后,似乎AWSEC2是一个不错的选择,但我不知道它是如何工作的,即使在看了视频。ec2有能力接受这样的项目并运行testng套件吗?最简单的方法是什么?我们不需要browserstack或saucylabs拥有的任何花哨的东西。我们只需要在后台运行浏览器测试,但不需要有视频记录或任何测试信息。我们真的需要cpu的能力来远程运行很多并行测试。
理想情况下,我们希望能够只是更换 URL
如果可能的话,使用另一个url并运行类似的测试。
public class DriverInit{
public WebDriver driver;
public ChromeOptions chromeOptions;
public DesiredCapabilities caps;
public static final String USERNAME = "my_name";
public static final String AUTOMATE_KEY = "blah_blah_blah";
public static final String URL = "https://" + USERNAME + ":" + AUTOMATE_KEY + "@hub-cloud.browserstack.com/wd/hub";
DriverInit(int row) throws MalformedURLException {
// for BrowserStack testing
caps = new DesiredCapabilities();
caps.setCapability("os", "Windows");
caps.setCapability("os_version", "10");
caps.setCapability("browser", "Chrome");
caps.setCapability("browser_version", "80.0 beta");
caps.setCapability("browserstack.local", "false");
caps.setCapability("browserstack.selenium_version", "3.5.2");
caps.setCapability("name", "selenium test for row " + row);
this.driver = new RemoteWebDriver(new URL(URL), caps);
this.chromeOptions = new ChromeOptions();
String chromeDriverPath = "resources/chromedriver.exe";
System.setProperty("webdriver.chrome.driver", chromeDriverPath);
}
2条答案
按热度按时间yeotifhr1#
你必须在aws上设置你的项目才能在那里运行测试。
所以基本上:安装os,安装chrome,安装chromedriver,安装project,安装project dependencies。
最好通过一些ci/cd自动完成(例如jenkins)
jv4diomz2#
要在aws或任何其他远程机器上远程运行,
确保计算机上运行selenium服务器。
向web驱动程序提供aws机器的ip和端口(selenium服务器正在运行)作为url(确保您的机器可以访问该aws机器)
这应该是你的工作。下面的代码应该可以工作。
或者,也可以使用selenium网格。在您的计算机上启动一个selenium服务器作为集线器,在aws计算机上启动一个服务器作为节点。然后运行它。代码将是类似的,我粘贴。