selenium grid-java

ippsafx7  于 2021-06-26  发布在  Java
关注(0)|答案(1)|浏览(416)

我在五台不同的机器上运行我的测试用例,并通过扩展报告获取报告。但在报告中,我无法确定测试用例在哪台机器上失败。所以我需要在每个测试的扩展报告中打印平台名和浏览器名。有人能帮我解决这个问题吗?

ukqbszuj

ukqbszuj1#

这是你提出的一个非常有趣的问题。有两件事,您需要添加到扩展报告中,即运行测试的浏览器和主机名
浏览器:据我所知,您必须在自动化框架中的desiredcapabilities中传递浏览器名称。因此,无需从节点中选择,只需在扩展报告中添加该值即可。
主机名:为了得到这个,我做了一些研究和开发,它是成功的。这是有点棘手,你可以添加这个代码在安装部分,它会返回你的节点ip和端口。在这里,
主机名是我的集线器ip
端口是我的集线器端口
请尝试此代码和恢复,如果你面临任何问题

import java.net.MalformedURLException;
import java.net.URL;

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.openqa.selenium.remote.SessionId;

import com.google.gson.JsonObject;
import com.google.gson.JsonStreamParser;

public class TestGrid {

    public static void main(String[] args) throws MalformedURLException {
        String hostname = "10.10.4.176";
        String port = "4441";

        DesiredCapabilities capabilities = new DesiredCapabilities();
        capabilities.setBrowserName("firefox");
        capabilities.setPlatform(Platform.WINDOWS);

        WebDriver driver = new RemoteWebDriver(new URL("http://"+hostname+":"+port+"/wd/hub"),capabilities);

        SessionId sessionid = ((RemoteWebDriver) driver).getSessionId();
        driver.get("http://"+hostname+":"+port+"/grid/api/testsession?session="+sessionid);
        String nodeDetails = driver.findElement(By.xpath("//pre")).getText();

        JsonStreamParser parser = new JsonStreamParser(nodeDetails);
        JsonObject obj = parser.next().getAsJsonObject();

        System.out.println("Node name: "+obj.get("proxyId").getAsString());

        String browserName = capabilities.getBrowserName().toLowerCase();
        System.out.println("Browser name: "+browserName);

        String os = capabilities.getPlatform().toString();
        System.out.println("Platform name: "+os);

        driver.get("http://www.google.com");
        driver.manage().window().maximize();
    }

}

相关问题