Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java AWS EC2能否用于在远程位置上运行自动Selenium测试_Java_Amazon Web Services_Selenium Webdriver_Amazon Ec2_Selenium Grid - Fatal编程技术网

Java AWS EC2能否用于在远程位置上运行自动Selenium测试

Java AWS EC2能否用于在远程位置上运行自动Selenium测试,java,amazon-web-services,selenium-webdriver,amazon-ec2,selenium-grid,Java,Amazon Web Services,Selenium Webdriver,Amazon Ec2,Selenium Grid,在工作中,我们在远程位置(BrowserStack)上运行自动化的Selenium测试。这就是远程web驱动程序的实例化方式,这些测试也使用testNG,项目的设置方式是,每个测试都将一个行号传递给这个DriverInit构造函数,然后测试该行上的内容(代码中没有显示该部分)。问题是我们没有钱在BrowserStack上运行100个并行测试,我们对此都不熟悉 阅读之后,AWS ec2似乎是一个不错的选择,但我不知道它是如何工作的,即使在看了它的视频之后。ec2是否有能力接受这样的项目并运行tes

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

阅读之后,AWS ec2似乎是一个不错的选择,但我不知道它是如何工作的,即使在看了它的视频之后。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); 
        }

您必须在AWS上设置项目才能在那里运行测试
基本上是:安装操作系统、安装chrome、安装chromedriver、安装项目、安装项目依赖项


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

您必须在AWS上设置项目,才能在那里运行测试
基本上是:安装操作系统、安装chrome、安装chromedriver、安装项目、安装项目依赖项


最好通过一些CI/CD(例如Jenkins)自动完成,以便在AWS或任何其他远程机器上远程运行

  • 确保您的计算机上运行selenium服务器
  • 将AWS机器的IP和端口(selenium服务器正在运行)作为URL提供给web驱动程序(确保您的机器可以访问该AWS机器)
  • 这应该是你的工作。下面的代码应该可以工作

    试试看{
    DesiredCapabilities=DesiredCapabilities.chrome();
    ChromeOptions chromOpt=新的ChromeOptions();
    chromOpt.addArguments(“代理”、“空”);
    chromOpt.setExperimentalOption(“使用自动扩展”,false);
    chromOpt.addArguments(“--disable dev shm用法”);
    chromOpt.addArguments(“--headless”);
    chromOpt.addArguments(“--no sandbox”);
    能力.setCapability(ChromeOptions.CAPABILITY,chromOpt);
    driver=new-RemoteWebDriver(新URL(“http://“+AWS\u-SERVER\u-URL+”:“+AWS\u-SERVER\u-PORT+”/wd/hub”),
    能力);
    }捕获(例外e){
    e、 printStackTrace();
    
    }
    要在AWS或任何其他远程机器上远程运行

  • 确保您的计算机上运行selenium服务器
  • 将AWS机器的IP和端口(selenium服务器正在运行)作为URL提供给web驱动程序(确保您的机器可以访问该AWS机器)
  • 这应该是你的工作。下面的代码应该可以工作

    试试看{
    DesiredCapabilities=DesiredCapabilities.chrome();
    ChromeOptions chromOpt=新的ChromeOptions();
    chromOpt.addArguments(“代理”、“空”);
    chromOpt.setExperimentalOption(“使用自动扩展”,false);
    chromOpt.addArguments(“--disable dev shm用法”);
    chromOpt.addArguments(“--headless”);
    chromOpt.addArguments(“--no sandbox”);
    能力.setCapability(ChromeOptions.CAPABILITY,chromOpt);
    driver=new-RemoteWebDriver(新URL(“http://“+AWS\u-SERVER\u-URL+”:“+AWS\u-SERVER\u-PORT+”/wd/hub”),
    能力);
    }捕获(例外e){
    e、 printStackTrace();
    
    }
    你能给我发一个链接到一篇文章,让我看看这个吗?我太笨了,甚至不知道我需要什么。当你说安装操作系统,安装chrome,ect,这是否意味着在ec2虚拟机上?另外,在设置ec2时,有很多东西,比如CodeDeploy,等等。我需要所有这些吗?像这样,但你必须自己弄清楚需要什么步骤,因为每个项目设置都是唯一的,所以我实际上刚刚创建了一个实例并开始工作。现在它说使用SSH连接到ec2实例。你知道这意味着什么或者这对我有什么作用吗?你能给我发一个链接到一篇文章,让我看看这个吗?我太笨了,甚至不知道我需要什么。当你说安装操作系统,安装chrome,ect,这是否意味着在ec2虚拟机上?另外,在设置ec2时,有很多东西,比如CodeDeploy,等等。我需要所有这些吗?像这样,但你必须自己弄清楚需要什么步骤,因为每个项目设置都是唯一的,所以我实际上刚刚创建了一个实例并开始工作。现在它说使用SSH连接到ec2实例。你知道这意味着什么或者这对我有什么好处吗?谢谢!示例中的代码是如何将Selenium网格与AWS一起使用?或者这有什么不同?目前,该项目使用testNG,每个测试都是针对不同用户的测试。我是否仍然可以保留我的testNG套件,并使用上面的代码运行它,并且它仍然可以在不同的线程上运行?我在哪里可以找到AWS服务器url?我只是建立了一个实例,但我不知道这意味着什么。下一步,它要求我通过SSHT连接到它。该代码将与您的TestNg套件配合使用。事实上,这与您在问题中提到的代码类似。您可以转到AWS控制台,它将向您显示instace,单击其详细信息,您将获得实例的IP,您可以将其用作AWS服务器IP。这么简单吗?我不需要将文件添加到AWS来运行这个?如果我不明白的话,我能在几个小时内给你留言吗?谢谢!c