我正在尝试测试我作为Spring Boot项目的一部分制作的网站,我正在使用Selenium。我能够测试基本的东西,如加载页面和标题,但我正在努力与页面的实际内容。
我的页面有以下部分:
<div id="main">
<div id="div_1"></div>
<div id="div_2"></div>
<div id="div_3"></div>
<div id="div_4"></div>
</div>
内容从JS脚本加载:
document.addEventListener("DOMContentLoaded", function(event) {
populateDivs()
})
我使用从类似问题中收集的以下选项初始化WebDriver(其他Selenium测试继续通过,所以我不认为这些选项是冲突的):
final ChromeOptions options = new ChromeOptions();
options.addArguments(
"--headless",
"--nogpu",
"--disable-gpu",
"--enable-javascript",
"--no-sandbox",
"--disable-extensions",
"--disable-blink-features=AutomationControlled",
"--disable-features=NetworkService,NetworkServiceInProcess",
"start-maximized",
"disable-infobars"
);
我还在我的测试用例中添加了一个等待,以便有时间加载内容:
final WebDriverWait wait = new WebDriverWait(driver, Duration.ofMinutes(1L));
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("div_1_content")));
我所做的任何尝试都不会改变这样一个事实,即即使在等待之后也不会加载任何内容。我不知道该怎么办-我是否使用了不正确的Selenium?或者我应该在JS端以不同的方式加载我的内容吗?
1条答案
按热度按时间hzbexzde1#
您需要注意以下几件事:
--headless=chrome
,Chrome 109版本之后是--headless=new
注:两种无头模式是什么?
--nogpu
* 和 *--disable-gpu
* 参数在现代Chrome浏览器中没有更多的关联。所以你可以放下它们。--enable-javascript
*。--no-sandbox
* 不是必需的,除非您在作为系统的root/admin用户执行测试时遇到问题,并且可以删除。--disable-extensions
* 和 *disable-infobars
* 参数不再有效。所以你可以放下它们。Network Service
有一些网络服务。这些都是为了忘记Chrome的功能。
NetworkContext
和NetworkService
是受信任的接口,不会发送到渲染器。只有浏览器可以访问它们。本用例
NetworkService
* 和 *NetworkServiceInProcess
* 是两个重要的配置,你不应该禁用它们。所以你需要删除参数:结合上面的建议执行你的测试用例,你应该可以开始了。
tl; dr
一些有用的文档: