簡體   English   中英

Selenium Grid並行測試無法並行工作

[英]Selenium Grid Parallel Test Is Not Work Parallel

您好,我有兩個節點,分別是Node1Node2 ,我在一台計算機上進行此測試。 我的問題是Node1Node2測試無法同時進行,因此它們不是並行的。 因此,當Node2測試啟動后Node1完成但我不想要它時,我希望它們一起啟動。我已經在TestNG.xml文件中嘗試過parallel="tests"parallel="classes"

這是我的Node1.java文件:

package grid;

import java.net.MalformedURLException;
import java.net.URL;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.Platform;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.testng.annotations.Test;

public class Node1 {
    WebDriver driver;
    String nodeUrl;
  @Test
  public void f() {
        try {
            //configuration
            nodeUrl= "http://192.168.56.1:5555/wd/hub";
            DesiredCapabilities capabilities = DesiredCapabilities.chrome();
            capabilities.setBrowserName("chrome");
            capabilities.setPlatform(Platform.WIN10);
            driver = new RemoteWebDriver(new URL(nodeUrl), capabilities);

            //test scripts
            driver.manage().deleteAllCookies();
            driver.manage().window().maximize();
            driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
            driver.manage().timeouts().pageLoadTimeout(45, TimeUnit.SECONDS);
            driver.get("https://www.amazon.com/");
            driver.findElement(By.linkText("Today's Deals")).click();
            driver.findElement(By.linkText("Gift Cards")).click();
            driver.findElement(By.linkText("Today's Deals")).click();
            driver.findElement(By.linkText("Gift Cards")).click();
            driver.findElement(By.linkText("Today's Deals")).click();
        } 
        catch (MalformedURLException e) {       
            e.printStackTrace();            
        }
  }
}

這是我的Node2.java文件:

package grid;

import java.net.MalformedURLException;
import java.net.URL;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.Platform;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.testng.annotations.Test;

public class Node2 {    
    WebDriver driver;
    String nodeUrl;
  @Test
  public void f() {
        try {
            //configuration
            nodeUrl= "http://192.168.56.1:5555/wd/hub";
            DesiredCapabilities capabilities = DesiredCapabilities.chrome();
            capabilities.setBrowserName("chrome");
            capabilities.setPlatform(Platform.WIN10);
            driver = new RemoteWebDriver(new URL(nodeUrl), capabilities);

            //test scripts
            driver.manage().deleteAllCookies();
            driver.manage().window().maximize();
            driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
            driver.manage().timeouts().pageLoadTimeout(45, TimeUnit.SECONDS);
            driver.get("https://www.google.com/");
        } 
        catch (MalformedURLException e) {       
            e.printStackTrace();            
        }
  }
}

這是我的TestNG.xml文件:

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name="Test Grid" parallel="tests">
    <test name="Test Node1">
        <classes>
            <class name="grid.Node1" />
        </classes>
    </test>
    <test name="Test Node2">
        <classes>
            <class name="grid.Node2" />
        </classes>
    </test>
</suite>

請嘗試以下對我testNG .xml`文件。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite">
  <test name="Test" parallel="classes" thread-count="2">
    <classes>
      <class name="com.github.parallel.Parallel1"/>
      <class name="com.github.parallel.Parallel2"/>
    </classes>
  </test> <!-- Test -->
</suite> <!-- Suite -->

請嘗試以下xml代碼。

<?xml version="1.0" encoding="UTF-8"?>
    <suite name="Test Grid" parallel="classes" thread-count="2" >
        <test name="Test ALl" preserve-order="false">
            <classes>
                <class name="grid.Node1" />
            </classes>
            <classes>
                <class name="grid.Node2" />
            </classes>
        </test>
    </suite>

如果在兩個測試中都將WebDriver字段聲明移到@Test方法中。 它也應該使用parallel =“ methods”起作用。 字段不是線程安全的。

 @Test
public void f() {
    try {
        WebDriver driver;
        //configuration
        nodeUrl= "http://192.168.56.1:5555/wd/hub";
        DesiredCapabilities capabilities = DesiredCapabilities.chrome();
        capabilities.setBrowserName("chrome");
        capabilities.setPlatform(Platform.WIN10);
        driver = new RemoteWebDriver(new URL(nodeUrl), capabilities);

        //test scripts
        driver.manage().deleteAllCookies();
        driver.manage().window().maximize();
        driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
        driver.manage().timeouts().pageLoadTimeout(45, TimeUnit.SECONDS);
        driver.get("https://www.google.com/");
    }
    catch (MalformedURLException e) {
        e.printStackTrace();
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM