Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.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 在切换情况下,无法使用Selenium web驱动程序在不同浏览器中运行URL_Java_Selenium Webdriver_Testng - Fatal编程技术网

Java 在切换情况下,无法使用Selenium web驱动程序在不同浏览器中运行URL

Java 在切换情况下,无法使用Selenium web驱动程序在不同浏览器中运行URL,java,selenium-webdriver,testng,Java,Selenium Webdriver,Testng,//我使用过的包文件 import org.testng.*; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.ie.InternetExplorerDriver; import org.openqa.selenium.chrome.ChromeDriver; //这是我希望通过用户输入在chrome中执行URL的java代码。在输出时,我输入选项2。在Ch

//我使用过的包文件

    import org.testng.*;
    import org.openqa.selenium.firefox.FirefoxDriver;
    import org.openqa.selenium.ie.InternetExplorerDriver;
    import org.openqa.selenium.chrome.ChromeDriver;
//这是我希望通过用户输入在chrome中执行URL的java代码。在输出时,我输入选项2。在Chrome中运行URL,但显示打开浏览器失败

 @Test (priority = 1)
 public void openBrowser() {

System.out.println("-----Select Module-----");
System.out.println("1. Firefox");
System.out.println("2. Chrome");
System.out.println("3. Internet Explorer ");

int role;
try {
    role = Integer.parseInt(reader.readLine());



switch (role) {
case 1:

     driver = new FirefoxDriver();
    break;
case 2:
     driver = new ChromeDriver();
    break;
case 3:
     driver = new InternetExplorerDriver();
    break;
default:
    //System.out.println("browser : " + browserType + " is invalid, Launching Firefox as browser of choice..");
    driver = new FirefoxDriver();
}

} catch (NumberFormatException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
  }
  }

   @Test (priority = 2,groups = {"TC01"},description = "User would be able to       Login Successfully")
   @Parameters ({ "UserName","Password"})
public void SuccessfulLogin(String userName, String passWord) {

try {



    driver.get("http://180.211.114.147:97/Account/Login");
    driver.manage().timeouts().implicitlyWait(120, TimeUnit.SECONDS);
    driver.findElement(By.id("UserName")).sendKeys(userName);
    driver.findElement(By.id("Password")).sendKeys(passWord);

    driver.findElement(By.id("btnLogin")).submit();

        String tmp = driver.getCurrentUrl();
        if (tmp.equals("http://180.211.114.147:97/#/app/dashboard"))
        {
            System.out.println("Login success!!");
        }
        else{
            System.out.println("Fail to login..");}
        driver.manage().timeouts().implicitlyWait(120, TimeUnit.SECONDS);

        /*String Actualtext = driver.findElement(By.xpath("/html/body/div/div[2]/div[3]/div[2]")).getText();
        Assert.assertEquals(Actualtext, "The username or password provided is incorrect");
        */

        //driver.quit();



} catch (Exception ex) {

  }
  }
下面是XML文件的代码

<suite name="Test Login" verbose="2">


<test name="Browser selection" >
<classes>
<class name="Login_Test">
<methods>
    <include name="openBrowser"></include>

</methods>
</class>
</classes>
</test>

<test name="Login with valid data" >

<parameter name="UserName" value="harsh"></parameter>
<parameter name="Password" value="harsh123"></parameter>

<groups>
<run>
<include name="TC01"></include>
</run>
</groups>

<classes>
<class name="Login_Test">
<methods>
    <exclude name="InvalidLogin"></exclude>
    <exclude name="EmptyLogin"></exclude>
</methods>
</class>
</classes>

</test>
TestNG的输出

[TestNG] Running:
  E:\sumit_rana\Files\Automation\Java eclipse\FAM_Test\Login.xml

-----Select Module-----
1. Firefox
2. Chrome
3. Internet Explorer 
2
FAILED: openBrowser
java.lang.IllegalStateException: The path to the driver executable must be set by the webdriver.chrome.driver system property; for more information, see https://github.com/SeleniumHQ/selenium/wiki/ChromeDriver. The latest version can be downloaded from http://chromedriver.storage.googleapis.com/index.html
    at com.google.common.base.Preconditions.checkState(Preconditions.java:199)
    at org.openqa.selenium.remote.service.DriverService.findExecutable(DriverService.java:109)
    at org.openqa.selenium.chrome.ChromeDriverService.access$0(ChromeDriverService.java:1)
    at org.openqa.selenium.chrome.ChromeDriverService$Builder.findDefaultExecutable(ChromeDriverService.java:137)
    at org.openqa.selenium.remote.service.DriverService$Builder.build(DriverService.java:296)
    at org.openqa.selenium.chrome.ChromeDriverService.createDefaultService(ChromeDriverService.java:88)
    at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:116)
    at Login_Test.openBrowser(Login_Test.java:66)

是,这是一个简单的初始化错误。在Chrome和IE上执行代码需要驱动程序

您需要设置系统属性并相应地给出驱动程序的路径:

System.setProperty("webdriver.ie.driver", "Drivers//IEDriverServer.exe");
driver =  new InternetExplorerDriver();

System.setProperty("webdriver.chrome.driver", "Drivers//chromedriver.exe");
driver =  new ChromeDriver();
您可以根据需要在交换机外部或内部设置系统属性

您可以从此处下载驱动程序:


我遵循的一个好做法是在我的项目文件中创建一个名为“Drivers”的文件夹并复制这些文件。这使您的项目更具可移植性。

您需要下载chrome和IE的二进制文件,然后还需要在代码中传递二进制文件的路径

对于chrome,请根据您的配置从以下链接下载二进制文件:-

对于Internet Explorer,请从以下链接下载:-

Internet Explorer驱动程序服务器

现在使用setProperty设置二进制文件的路径,然后将其传递给chromedriver对象,如下所示:-

System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver");
WebDriver driver = new ChromeDriver();

希望它能帮助您:

您好,**我使用了以下代码**System.setPropertywebdriver.chrome.driver,E:\\chromedriver.exe WebDriver=new chromedriver**//Out put in TestNG/**--选择模块--1。火狐2。铬3。Internet Explorer 2在端口31168上启动ChromeDriver 2.21.371459 36d3d07f660ff2bc1bf28a75d1cdabed0983e7c4仅允许本地连接。失败:OpenBrowser尝试以下操作:-