【问题标题】:Not able to Run URL in different Browser using Selenium web driver in Switch case condition无法在 Switch case 条件下使用 Selenium Web 驱动程序在不同的浏览器中运行 URL
【发布时间】:2016-03-17 12:14:49
【问题描述】:

//我使用过的打包文件

    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 但它显示 FAILED open browser

 @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)

【问题讨论】:

    标签: java selenium-webdriver testng


    【解决方案1】:

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

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

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

    您可以根据需要在开关外部或内部设置系统属性。

    您可以从这里下载驱动程序:http://www.seleniumhq.org/download/

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

    【讨论】:

      【解决方案2】:

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

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

      http://chromedriver.storage.googleapis.com/index.html?path=2.21/

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

      http://www.seleniumhq.org/download/#mainContent(Internet Explorer 驱动服务器)

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

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

      希望对你有帮助:)

      【讨论】:

      • 你好,**我使用了以下代码**System.setProperty("webdriver.chrome.driver","E:\\chromedriver.exe")WebDriver driver = new ChromeDriver(); **//在TestNG中输出//** -----选择模块----- 1 . Firefox 2. Chrome 3. Internet Explorer 2 在端口 31168 上启动 ChromeDriver 2.21.371459 (36d3d07f660ff2bc1bf28a75d1cdabed0983e7c4) 只允许本地连接。失败:打开浏览器
      猜你喜欢
      • 2018-04-02
      • 2019-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-15
      • 2019-02-22
      • 2020-10-10
      相关资源
      最近更新 更多