2017-09-21 6 views
1

여러 웹 브라우저에서 셀렌을 사용하여 몇 가지 테스트를 수행하려고합니다. 이것은 driver 객체에 의해 사용되는 웹 브라우저를 나타내는 문자열을 반환합니다WebDriver 객체의 브라우저 이름을 효과적으로 변경하는 방법은 무엇입니까?

((RemoteWebDriver) driver).getCapabilities().getBrowserName(); 

: 다른 웹 드라이버를 구별하기 위해, 나는 다음 코드 줄을 사용합니다. 그러나 필자의 Opera WebDriver 객체를 사용하면 String 'chrome'을 얻을 수 있습니다. 내가 명시 적으로 DesiredCapabilities를 사용하여 '오페라'에 브라우저 이름을 설정하여이 변경 시도 :

DesiredCapabilities capabilities = new DesiredCapabilities(); 
capabilities.setBrowserName("opera"); 
WebDriver driver = new OperaDriver(capabilities); 

불행하게도,이 내 문제가 해결되지 않습니다. 웹 브라우저 이름을 효과적으로 변경하려면 어떻게해야합니까?

+2

이 작업을 수행 할 수 없습니다. 그것은 특정 브라우저에 대한 드라이버에 의해 설정되며 코드에 의해 기록 될 수 없습니다. 그래서 그 정보를 저장하고 그것을 불러들이는 다른 방법이 필요합니다. –

+0

@ TarunLalwani가 맞다고 생각합니다. – iamsankalp89

+0

나는 실제로 그것을 다른 방법으로 저장해야합니다. 감사! –

답변

0

아쉽게도 브라우저 이름을 변경할 수 없습니다.

대신 당신이 시도 할 수있는 것은 특별히 여러 브라우저를 처리하기위한 기능을 만드는 것입니다 : -

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("[email protected]"); 
    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 [email protected]")){ 
     System.out.println("User Successfully logged in"); 

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

    driver.quit(); 

} 

} 

=======

+0

귀하의 반응에 감사드립니다,하지만 내 질문에 대답하지 않습니다. 다른 WebDriver 개체를 초기화 할 수있는 기능이 이미 있습니다. 초기화 된 후에 WebDriver 개체를 구별 할 수 있기를 원했습니다. –

1

귀하의 기본적인 요구 사항이 난 경우 브라우저 초기화를 확인하는 것입니다 다음과 같은 JavascriptExecutor을 사용하여 브라우저에서 점점 사용자 에이전트에 의해 수행 될 수있는 권리 :

String userAgent = (String) ((JavascriptExecutor) driver).executeScript("return navigator.userAgent;"); 

//following is for identifying opera browser initialization 
if(userAgent.contains("OPR/"){ 

    System.out.println("Browser currently in use is Opera"); 

} 

를 마찬가지로 다른 브라우저를 식별 할 수 this을 참조하여 초기화하십시오.

+0

그건 내 요구 사항이야. 나는 이미 다른 곳에 정보를 저장하여 문제를 해결했지만 해결책을 호기심에서 테스트했다. 그것은 작동하지만 내 현재의 솔루션이 더 적합하다고 생각합니다. 그럼에도 불구하고 고마워! –