我正在使用Java(8(、Selenium(4(和Chromedriver(98.0(进行自动测试
该测试针对的是一个需要使用不同第三方帐户登录的网站,其中一个是GitLab
不幸的是,在试图访问Gitlab的登录页面时,测试总是被卡住,即"在访问Gitlab.com之前检查浏览器"部分。如果我暂停这一步的测试并手动复制选项卡,新打开的选项卡将能够进入,然后第一个选项卡也将能够进行(可能是因为此时终于有了有效的cookie(
我尝试过不同的解决方案,但没有成功。目前这是我的代码:
@Test
public void test() throws MalformedURLException {
ChromeOptions options = new ChromeOptions();
options.addArguments("--disable-dev-shm-usage");
options.addArguments("--disable-blink-features=AutomationControlled");
options.addArguments("--start-maximized");
options.setExperimentalOption("excludeSwitches", Collections.singletonList("enable-automation"));
options.setExperimentalOption("useAutomationExtension", false);
RemoteWebDriver driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), options);
driver.navigate().to("https://gitlab.com/users/sign_in");
new FluentWait<>(driver)
.withTimeout(Duration.ofSeconds(60))
.pollingEvery(Duration.ofSeconds(2))
.until(x -> driver.findElements(By.xpath("//*[@data-translate='checking_browser']")).size() == 0);
}
当尝试使用未检测的chromedriver时,使用Python是可行的,但这是我使用Java的要求。Java有类似的东西吗?或者我缺少一个额外的ChromeOption吗?
需要下载chrome驱动程序https://chromedriver.chromium.org/downloadshttps://chromedriver.chromium.org/downloads并在设置驱动程序时添加此代码
System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver");
WebDriver driver = new ChromeDriver();