首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AWS EC2可用于在远程位置上运行自动硒测试吗?

AWS EC2可用于在远程位置上运行自动硒测试吗?
EN

Stack Overflow用户
提问于 2020-09-03 21:21:00
回答 2查看 6.4K关注 0票数 1

在工作中,我们正在远程位置(BrowserStack)上运行自动化的Selenium测试。远程web驱动程序就是这样实例化的,这些测试也使用testNG,而项目的设置方式是每个测试都将一个行号传递给这个DriverInit构造函数,然后测试该行上的内容(该部分在代码中没有显示)。问题是我们没有钱在BrowserStack上运行100个并行测试,而且我们都不熟悉这一点。

在阅读完之后,AWS ec2似乎是一个很好的选择,但我不知道它是如何工作的,即使在它上看了视频。ec2有能力接受这样的项目并运行testNG套件吗?做这件事最简单的方法是什么?我们不需要BrowserStack或SaucyLabs拥有的任何花哨的东西。我们只需要在后台运行浏览器测试,但我们不需要有视频记录或任何测试信息。我们确实需要CPU的能力来远程运行许多并行测试。

理想情况下,我们希望能够用另一个url替换URL,并在可能的情况下运行类似的测试。

代码语言:javascript
运行
复制
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); 
        }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-09-04 11:14:22

要在AWS或其他远程机器上远程运行,

确保在您的machine.

  • Provide机器的 IP和端口(运行selenium服务器的端口)上运行一个服务器,作为驱动程序(确保您的计算机可以访问该
    1. 计算机)

这应该能胜任你的工作。下面的代码应该可以工作。

代码语言:javascript
运行
复制
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 Grid。在您的计算机上启动Selenium作为集线器,在AWS机器上启动服务器作为节点。然后运行它。代码将与我粘贴的代码相似。

票数 3
EN

Stack Overflow用户

发布于 2020-09-03 22:07:13

您必须在AWS上设置您的项目才能在那里运行测试。

所以基本上:安装操作系统,安装chrome,安装chromedriver,安装项目,安装项目依赖项。

最好是通过一些CI/CD自动完成(例如Jenkins)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63731790

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档