如何解决selenium.WebDriverException:无法访问chrome
我有一个 C++ 应用程序 application.exe,它使用 CEF 浏览器(chrome 嵌入式框架)作为 UI。
对于这个 UI,我想用 Selenium 开发自动化测试。通常我通过 Java 控制 Selenium。
下面是我得到的堆栈跟踪:
Starting ChromeDriver 91.0.4472.101 (af52a90bf87030dd1523486a1cd3ae25c5d76c9b-refs/branch-heads/4472@{#1462}) on port 36815
Only local connections are allowed.
Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe.
ChromeDriver was started successfully.
org.openqa.selenium.WebDriverException: chrome not reachable
Build info: version: '3.13.0',revision: '2f0d292',time: '2018-06-25T15:24:21.231Z'
System info: host: 'NO1010042072000',ip: '10.42.72.0',os.name: 'Windows 10',os.arch: 'amd64',os.version: '10.0',java.version: '15.0.2'
Driver info: driver.version: ChromeDriver
remote stacktrace: Backtrace:
Ordinal0 [0x006C3733+2504499]
Ordinal0 [0x0065C401+2081793]
Ordinal0 [0x005624F0+1058032]
Ordinal0 [0x005574B5+1012917]
Ordinal0 [0x0058005B+1179739]
Ordinal0 [0x0057C58C+1164684]
Ordinal0 [0x00579DC3+1154499]
Ordinal0 [0x005A9B82+1350530]
Ordinal0 [0x005A97DA+1349594]
Ordinal0 [0x005A5D4B+1334603]
Ordinal0 [0x005822B4+1188532]
Ordinal0 [0x00583149+1192265]
GetHandleVerifier [0x0083FB8C+1512252]
GetHandleVerifier [0x008EB0DF+2214031]
GetHandleVerifier [0x00744BC3+484211]
GetHandleVerifier [0x00743E69+480793]
Ordinal0 [0x0066218D+2105741]
Ordinal0 [0x006666E8+2123496]
Ordinal0 [0x00666827+2123815]
Ordinal0 [0x0066FB73+2161523]
BaseThreadInitThunk [0x74EAFA29+25]
RtlGetAppContainerNamedObjectPath [0x77037C7E+286]
RtlGetAppContainerNamedObjectPath [0x77037C4E+238]
我的代码片段:
System.setProperty("webdriver.chrome.driver","C:\\Users\\Administrator\\Desktop\\chromedriver_win32\\chromedriver.exe");
ChromeOptions options = new ChromeOptions();
options.setBinary(<cef_workflow_path>);
WebDriver chDriver = new ChromeDriver(options);
sleep(3000);
chDriver.findElement(By.id("EmailPage-EmailField"));
WebElement email = chDriver.findElement(By.id("EmailPage-EmailField"));
System.out.println(email.isDisplayed());
email.clear();
email.sendKeys(userName);
解决方法
我看到您在将 URL 传递给驱动程序之前确实希望访问网页上的 Web 元素。
你首先需要
chDriver.get(yourURLLink);
并且只有在此之后,当页面加载时尝试使用
访问元素chDriver.findElement(By.id("EmailPage-EmailField"));
等
,你能检查一下吗,我希望它对你有用
ChromeOptions option = new ChromeOptions();
option.addArguments(new ArrayList<String>() {
{
add("--no-sandbox");
add("--disable-gpu-sandbox");
}
});
WebDriver driver = new ChromeDriver(option);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。