当前位置: 首页 > 知识库问答 >
问题:

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

秋煌
2023-03-14
    import org.testng.*;
    import org.openqa.selenium.firefox.FirefoxDriver;
    import org.openqa.selenium.ie.InternetExplorerDriver;
    import org.openqa.selenium.chrome.ChromeDriver;
 @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) {

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

共有1个答案

郭翰翮
2023-03-14

你需要下载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();
 类似资料:
  • 问题内容: 我需要使用Java中的Selenium chrome驱动程序进行测试。但是不应打开Chrome窗口。假设这是一种产品,则不应打开任何窗口。 我也看过这个; 是否可以在SeleniumRC中隐藏浏览器? 但是对我来说没有解决方案。测试应该独立于操作系统,并且我尝试使用HtmlUnitDriver进行测试而没有打开任何窗口,但是它存在一些问题。当按ID查找组件时,可能无法按ID查找组件。某

  • 问题内容: 我需要使用Java中的Selenium chrome驱动程序进行测试。但是chrome窗口不应该打开。假设这是一种产品,则不应打开任何窗口。 我也看过这个; 是否可以在SeleniumRC中隐藏浏览器? 但是对我来说没有解决办法。测试应该独立于操作系统,并且我尝试使用HtmlUnitDriver进行测试而没有打开任何窗口,但是它存在一些问题。当按ID查找组件时,可能无法按ID查找组件。

  • 我正尝试在不同的浏览器驱动中运行Fluentlenium。我想我需要从Fluentlenium配置getDefaultDriver(),但是我不确定该怎么做。任何示例代码将是伟大的。这是我的代码,但它不起作用。我在Eclipse中得到的消息是: “java.lang.IllegalStateException:驱动程序可执行文件的路径必须由webdriver.chrome.driver系统属性设置

  • 我无法使用selenium webdriver 3.4.0启动Firefox浏览器

  • 问题内容: 我正在尝试通过for循环在多个浏览器中运行相同的测试,但它始终仅在Firefox上运行。 一项有趣的观察;当我包含该参数时,它仅在Internet Explorer上运行。 Selenium Webdriver是否以这种方式工作,或者我的理解是错误的? 问题答案: 我实际上已经在Java中完成了此操作,以下对我来说效果很好: 如果您要使用其他语言编写测试,则当然需要对此进行调整,我知道

  • 我试图运行一些单元测试使用Selenium网络驱动程序和C#。NET for Firefox浏览器,但我无法做到这一点(Chrome和IE11浏览器工作顺利)。 以下是我收集的信息: 操作系统:Windows 10企业版 Gecko驱动程序版本:geckodriver-v0。17.0-win32 Mozilla Firefox版本:54.0.1(32位) 已在“C:\LEO\SELENIUM C\