如何使用Selenium Webdriver在运行时(即在初始化浏览器之后)更新浏览器的语言

时间:2019-08-23 10:36:15

标签: java selenium selenium-webdriver selenium-chromedriver selenium-grid

我有Selenium测试套件,该套件可以在默认的浏览器语言(英语)上运行。现在,我必须在套件中引入这样的测试-

  1. 初始化浏览器(对于使用英语(默认)语言初始化浏览器的测试套件中的所有测试,此操作发生在Before方法中)
  2. 登录
  3. 使用基于浏览器语言(最好是非英语)的语言创建文章
  4. 发布文章

我已经在Stack Overflow和其他技术站点上探讨了许多可能的解决方案,以在运行时设置浏览器语言,但是找不到合适的解决方案或以其他方式实现此类方案的可能性。

@Before
public void beforeScenario(Scenario scenario)
{
   synchronized (driverThreadLocal)
   {
       new BrowserDownloadDirectory().cleanDownloadDirectory();
       driverThreadLocal.set(new DriverFactory().getConfiguredDriver(scenario));
   }

}

public WebDriver getConfiguredDriver(Scenario scenario)
{
  WebDriver driver = getDriverForBrowser(getBrowserTypeFromProps(), scenario);
  return driver;
}

private String getBrowserTypeFromProps()
{
  String type = System.getProperty("tie.ui.test.browser.type");
  return (type != null) ? type : "chrome";
}

private WebDriver createChromeDriver(Scenario scenario)
{
  ChromeOptions chromeOptions = new ChromeOptions();

  chromeOptions.setProxy(createDirectConnectionProxyConfig());
  chromeOptions.addArguments("--no-sandbox");
  chromeOptions.addArguments("--start-maximized");
  chromeOptions.addArguments("--window-size=1920,1080");
  chromeOptions.addArguments("--disable-infobars");
  chromeOptions.setCapability("browserName", "chrome");
  chromeOptions.setAcceptInsecureCerts(true);
  chromeOptions.setCapability("name", scenario.getName());

  Map<String, Object> prefs = new HashMap<String, Object>();
  String downloadDir = new BrowserDownloadDirectory().getPath().toAbsolutePath().toString();
  prefs.put("download.default_directory",  downloadDir);
  prefs.put("profile.default_content_settings.popups", 0);

 prefs.put("profile.content_settings.exceptions.automatic_downloads.*.setting", 1);

 chromeOptions.setExperimentalOption("prefs", prefs);
 try
 {
   RemoteWebDriver dsa = new RemoteWebDriver(new 
   URL(getConfiguredHubEndpoint()),chromeOptions);

   dsa.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS);
   dsa.manage().timeouts().setScriptTimeout(5, TimeUnit.SECONDS);
   dsa.manage().window().maximize();

   dsa.setFileDetector(new LocalFileDetector());
   return dsa;
 }catch (MalformedURLException e)
 {
   throw new IllegalStateException(e);
 }
}

这是我用来初始化浏览器的代码的一部分。我认为调整它不是一个好主意。那么,如何在不单独运行它们的情况下用另一种语言初始化浏览器以测试套件中的一些测试呢?

我非常感谢您在此问题上的帮助,以及对以更好的方式处理此类测试的想法。

预先感谢

0 个答案:

没有答案