awsec2可以用于在远程位置运行自动selenium测试吗

o0lyfsai  于 2021-07-05  发布在  Java
关注(0)|答案(2)|浏览(384)

在工作中,我们在远程位置(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); 
        }
yeotifhr

yeotifhr1#

你必须在aws上设置你的项目才能在那里运行测试。
所以基本上:安装os,安装chrome,安装chromedriver,安装project,安装project dependencies。
最好通过一些ci/cd自动完成(例如jenkins)

jv4diomz

jv4diomz2#

要在aws或任何其他远程机器上远程运行,
确保计算机上运行selenium服务器。
向web驱动程序提供aws机器的ip和端口(selenium服务器正在运行)作为url(确保您的机器可以访问该aws机器)
这应该是你的工作。下面的代码应该可以工作。

try {
            DesiredCapabilities capabilities = DesiredCapabilities.chrome();

            ChromeOptions chromOpt = new ChromeOptions();
            chromOpt.addArguments("Proxy","null");
            chromOpt.setExperimentalOption("useAutomationExtension", false);
            chromOpt.addArguments("--disable-dev-shm-usage");
            chromOpt.addArguments("--headless");
            chromOpt.addArguments("--no-sandbox");

            capabilities.setCapability(ChromeOptions.CAPABILITY,chromOpt );

            driver = new RemoteWebDriver(new URL("http://" + AWS_SERVER_URL + ":" + AWS_SERVER_PORT + "/wd/hub"),
                    capabilities);
        } catch (Exception e) {
            e.printStackTrace();
        }

或者,也可以使用selenium网格。在您的计算机上启动一个selenium服务器作为集线器,在aws计算机上启动一个服务器作为节点。然后运行它。代码将是类似的,我粘贴。

相关问题