java - Opera 驱动程序不适用于 Selenium - Java

标签 java selenium-webdriver opera operadriver

我正在使用 Selenium Web 驱动程序 - Java 编写跨浏览器测试脚本。我的 Firefox、Chrome 和 IE 浏览器均已打开并成功运行该脚本。但是,在 Opera 中,只有浏览器正在打开。即使 driver.manage().window().maximize(); 也不起作用。只需打开浏览器并保持直到我将其关闭。当我手动关闭浏览器时,测试套件失败。

这是我的 java 类。

package multiBrowser;

import org.testng.annotations.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxProfile;
import org.openqa.selenium.firefox.internal.ProfilesIni;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.opera.OperaDriver;
import org.testng.annotations.Parameters;

public class MultiBrowserClass {

    WebDriver driver;

    @Test
    @Parameters("browser")
    public void multiBrowsers(String browserName) throws InterruptedException{

        if(browserName.equalsIgnoreCase("firefox")){

            System.setProperty("webdriver.firefox.marionette","D:\\My Work\\Setup\\JAR\\geckodriver.exe");
            ProfilesIni profile = new ProfilesIni();    
            FirefoxProfile myprofile = profile.getProfile("default");
            driver = new FirefoxDriver(myprofile);

        }
        if(browserName.equalsIgnoreCase("chrome")){

            System.setProperty("webdriver.chrome.driver", "D:\\My Work\\Setup\\JAR\\driver\\chromedriver.exe");
            driver = new ChromeDriver();
        }
        else if(browserName.equalsIgnoreCase("IE")){

            System.setProperty("webdriver.ie.driver", "D:\\My Work\\Setup\\JAR\\driver\\IEDriverServer.exe");
            driver = new InternetExplorerDriver();
        }
        else if(browserName.equalsIgnoreCase("opera")){

            System.setProperty("webdriver.opera.driver", "D:\\My Work\\Setup\\JAR\\driver\\operadriver.exe");
            driver = new OperaDriver(); 

        }

        driver.manage().window().maximize();

        driver.navigate().to("https://");

        System.out.println(driver.getTitle());

        driver.findElement(By.xpath("//div[@id='navbar-main']/ul/li[5]/a")).click();    
        driver.findElement(By.xpath("//div[@id='navbar-main']/ul/li[5]/ul/li/a")).click();
        Thread.sleep(3000);
        driver.findElement(By.name("email")).clear();
        driver.findElement(By.name("email")).sendKeys("abc@mm.kk");
        driver.findElement(By.name("password")).clear();
        driver.findElement(By.name("password")).sendKeys("1qaz2wsx");
        Thread.sleep(3000);
        driver.findElement(By.xpath("//form[@id='loginform']/div[8]/button")).click();
        Thread.sleep(5000);

        if(driver.getPageSource().contains("Welcome abc@mm.kk")){
            System.out.println("User Successfully logged in");

        }else{
            System.out.println("Username or password you entered is incorrect");
        }

        driver.quit();

    }

}

这是 testng.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite">

  <!-- firefox -->  

  <test name="FirefoxTestCases">  
      <parameter name="browser" value="firefox"/>  
      <classes> 
        <class name="multiBrowser.MultiBrowserClass"/> 
      </classes> 
  </test> 


  <!-- chrome -->  

  <test name="ChromeTestCases">  
      <parameter name="browser" value="chrome"/>  
      <classes> 
        <class name="multiBrowser.MultiBrowserClass"/> 
      </classes> 
  </test>


   <!-- internet explorer -->

  <test name="IETestCases">  
      <parameter name="browser" value="IE"/>  
      <classes> 
         <class name="multiBrowser.MultiBrowserClass"/> 
      </classes> 
  </test>

     <!-- Opera -->

  <test name="OperaTestCases">  
      <parameter name="browser" value="opera"/>  
      <classes> 
         <class name="multiBrowser.MultiBrowserClass"/> 
      </classes> 
  </test>

</suite> <!-- Suite -->

我已经从this下载了operadriver页面(operadriver_win64.zip)。

这是 Opera 浏览器的打开方式。

Opera Browser

Opera 版本是 41.0.2353.56。

提前致谢。 :)

最佳答案

找到答案了。

System.setProperty("webdriver.chrome.driver", "D:\\My Work\\Setup\\JAR\\driver\\operadriver.exe");
driver = new ChromeDriver();

然后安装了opera 38。问题解决了。 :)

关于java - Opera 驱动程序不适用于 Selenium - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40760932/

相关文章:

java - 从 Android 移动应用发送消息到 Azure IoT 中心

css - 如何在 opera 浏览器的 css 中设置 if?

java - 解析并读取java中的公钥

Java - 使用 Hibernate (HBM) 在数据库中引用 Enum(数字值)

python - 不使用 WebDriverWait 我的代码返回 : element click intercepted/with WebDriverWait returns 'NoneType' object is not iterable

Python和Selenium移动仿真

html - Div 在 Chrome 和 Opera 中不可见

html - 防止电话号码被转换为 Opera Mobile 上的链接

java - 适配器中的 getView nullPointerException

python - 无法从网站收集链接(Python)