簡體   English   中英

為什么 Selenium webdriver 沒有在遠程機器上最大化 chrome?

[英]Why Selenium webdriver is not maximize chrome on remote machine?

當我在我的本地機器上運行測試時,它正在工作,但遠程機器沒有最大化 chrome。 由於此驅動程序無法找到屏幕上的元素,因此所有測試均失敗。 我已經嘗試了所有推薦的解決方案。 這是我的代碼。

公共 class BrowserFactory 擴展 BaseTest {

public WebDriver prepareDriver() {
    WebDriver driver;

    if (getAveaConfiguration().isRemote().booleanValue()) {
        driver = getRemoteDriver();
        //driver.manage().window().maximize();
        Dimension d = new Dimension(1936,1056);
        driver.manage().window().setSize(d);
        System.out.println("PageSize:" + driver.manage().window().getSize());
    } else {
        driver = getLocalDriver();
        driver.manage().window().maximize();
        System.out.println(driver.manage().window().getSize());
    }
    return driver;
}

private WebDriver getRemoteDriver() {
    WebDriver webDriver;
    DesiredCapabilities cap = getRemoteCapabilities();
    try {
        System.out.println(getAveaConfiguration().getGridURL());
        webDriver = new RemoteWebDriver(new URL(getAveaConfiguration().getGridURL()), cap);

        ((RemoteWebDriver) webDriver).setFileDetector(new LocalFileDetector());
    } catch (MalformedURLException mue) {
        throw new TestException(mue);
    }
    return webDriver;
}

private DesiredCapabilities getRemoteCapabilities() {
    DesiredCapabilities capabilities;
    if ("firefox".equals(getAveaConfiguration().getBrowser())) {
        capabilities = DesiredCapabilities.firefox();

        FirefoxProfile profile = new FirefoxProfile();
        profile.setAcceptUntrustedCertificates(true);
        profile.setAssumeUntrustedCertificateIssuer(false);
        profile.setPreference("browser.privatebrowsing.autostart", true);
        profile.setPreference("network.proxy.type", 0);

        capabilities.setCapability(FirefoxDriver.PROFILE, profile);
        return capabilities;

    } else if ("ie".equals(getAveaConfiguration().getBrowser())) {
        return DesiredCapabilities.internetExplorer();

    } else {
        capabilities = DesiredCapabilities.chrome();

        ChromeOptions options = new ChromeOptions();
        Map<String, Object> prefs = new HashMap<>();
        prefs.put("credentials_enable_service", false);
        prefs.put("profile.password_manager_enabled", false);
        options.setExperimentalOption("prefs", prefs);
        options.addArguments("enable-automation");
        options.addArguments("--headless");
        options.addArguments("--window-size=1920,1080");
        options.addArguments("--no-sandbox");
        options.addArguments("--disable-extensions");
        options.addArguments("--dns-prefetch-disable");
        options.addArguments("--disable-infobars");
        options.addArguments("--disable-dev-shm-usage");
        options.addArguments("--disable-browser-side-navigation");
        options.addArguments("enable-features=NetworkServiceInProcess");
        options.addArguments("--disable-gpu");

        capabilities.setCapability(ChromeOptions.CAPABILITY, options);
        return capabilities;
    }
}

private WebDriver getLocalDriver() {
    switch (getAveaConfiguration().getBrowser()) {
    case "chrome":
        return new ChromeDriver();

// case "ie": // return new Inte.netExplorerDriver(getCapabilitiesForIe()); 默認值:返回新的 ChromeDriver(); } }

我解決了我的問題,但忘記關閉我的問題。 問題是有人將 google chrome 文件移動到另一條路徑。 重新安裝 chrome,問題解決。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM