ChromeDriver 2.33的发行说明表示""修复了导致调整大小/定位窗口命令在Chrome 62 +"上失败的问题。但是,当我使用Chrome 62+浏览器时,这仍然是一个问题。使用chrome驱动程序最大化chrome窗口会导致以下异常。有人知道解决方案吗?
我注意到的另一件事是,虽然我从https://chromedriver.storage.googleapis.com/index.html?path=2.33/安装了最新的chromedriver(v2.33),但下面打印的日志显示驱动程序信息: chromedriver = 2.25.426923 !!
线程中的异常" main" org.openqa.selenium.WebDriverException: 未知错误:无法从未知错误中获取自动化扩展: 无法找到页面: 镀铬的扩展://aapnijgdinlhnhlmodcfapnahmbfebeb/_generated_background_page.html (会话信息:chrome = 62.0.3202.62)(驱动程序信息: chromedriver = 2.25.426923 (0390b88869384d6eb0d5d09729679f934aab9eed),platform = Windows NT 10.0.15063 x86_64)(警告:服务器未提供任何堆栈跟踪信息)
答案 0 :(得分:2)
正好有两个问题。
如您所述,您已安装最新的chromedriver(v2.33),但下面打印的日志显示驱动程序信息:chromedriver = 2.25.426923,此问题必须先解决。您可以考虑从 chromedriver.exe
手动删除所有悬空的 Task Manager
任务。此外,您可以考虑使用 CCleaner
来消除系统中所有糟糕的操作系统内容。如果需要,请重新启动系统。最后确保您在 chromedriver.exe
中使用的 System.setProperty()
的绝对位置确保chromedriver二进制文件的版本为2.33。
最后,建议将 ChromeOptions
类用于 maximize
Web浏览器,如下所示:
System.setProperty("webdriver.chrome.driver", "C:\\your_directory\\chromedriver.exe");
ChromeOptions opt = new ChromeOptions();
opt.addArguments("disable-infobars");
opt.addArguments("--start-maximized");
opt.addArguments("--disable-extensions");
WebDriver driver = new ChromeDriver(opt);
driver.get("https://google.com");
以下是一些可以解决您问题的替代方案:
使用WebDriver.Window界面中的maximize()
:
driver.manage().window().maximize();
使用WebDriver.Window界面中的setSize(Dimension targetSize)
:
driver.manage().window().setSize(new Dimension(800, 600));
使用addArguments("--start-maximized")
到ChromeOptions:
chromeOptions.addArguments("--start-maximized");
使用addArguments("--window-size=1920,1080")
到ChromeOptions:
chromeOptions.addArguments("--window-size=1920,1080");
使用JavaScriptExecutor界面中的executeScript()
:
((JavaScriptExecutor)driver).executeScript("window.resizeTo(1024, 768);");
答案 1 :(得分:0)
使用ChromeOptions类。
System.setProperty("webdriver.chrome.driver", "h:\\chromedriver.exe");
ChromeOptions options = new ChromeOptions();
options.addArguments("disable-infobars");
options.addArguments("--start-maximized");
WebDriver driver = new ChromeDriver(options);
driver.get(url);
答案 2 :(得分:0)
我相信有一些旧的Chrome驱动程序进程在后端运行,并且在通过代码调用时会被拾取。我删除了所有进程实例,删除了旧版本的chrome驱动程序,添加了新的2.33版本并且工作正常。谢谢大家的建议。
答案 3 :(得分:0)
我认为其背后的原因可能是您的Chrome版本。重新尝试更新Chrome浏览器。我在chrome浏览器和驱动程序之间的兼容性方面遇到过这类问题