Google chrome Div在有头镀铬中可见,在无头镀铬中不可见

Google chrome Div在有头镀铬中可见,在无头镀铬中不可见,google-chrome,selenium,selenium-chromedriver,google-chrome-headless,katalon-studio,Google Chrome,Selenium,Selenium Chromedriver,Google Chrome Headless,Katalon Studio,我试图在Katalon Studio中测试我们软件的登录页面(它使用Selenium),而headless Chrome不会呈现欢迎消息显示的iframeWebUI.verifyElementVisible失败,而WebUI.verifyElementPresent成功。截图也没有显示。测试过程中没有打嗝 当我在headless模式下从命令行运行Chrome时,它的--dump dom选项会生成一个截断的输出,但是我可以看到iframe的div容器是不可见的: <div id="Div_A

我试图在Katalon Studio中测试我们软件的登录页面(它使用Selenium),而headless Chrome不会呈现欢迎消息显示的iframe
WebUI.verifyElementVisible
失败,而
WebUI.verifyElementPresent
成功。截图也没有显示。测试过程中没有打嗝

当我在headless模式下从命令行运行Chrome时,它的
--dump dom
选项会生成一个截断的输出,但是我可以看到iframe的div容器是不可见的:

<div id="Div_AlertWin" style="position:absolute;display:none" onclose="fnLoginUnloadAlert()">

当我在头上的Chrome中查看时,它是可见的

<div id="Div_AlertWin" style="position: absolute; display: block; left: 183.5px; top: 218.5px;" onclose="fnLoginUnloadAlert()">


它看起来像是一个startup JS脚本,显示div在headless Chrome中无法正确运行。如何调试其JS执行?我无法使用
--远程调试端口,因为appspot被公司防火墙阻止。

根据您提供的HTML,普通Chrome浏览器
呈现
HTML DOM
,如下所示:

<div id="Div_AlertWin" style="position: absolute; display: block; left: 183.5px; top: 218.5px;" onclose="fnLoginUnloadAlert()">
<div id="Div_AlertWin" style="position:absolute;display:none" onclose="fnLoginUnloadAlert()">
因此,这里我们需要更改为
style=“position:absolute;display:block”
,然后他们按照如下方式查找/定位/搜索
WebElement

((JavascriptExecutor)driver).executeScript("document.getElementById('Div_AlertWin').style.display='block';");
WebElement element = driver.findElement(By.id("Div_AlertWin"));

根据您提供的HTML,
Normal Chrome浏览器
呈现
HTML DOM
,如下所示:

<div id="Div_AlertWin" style="position: absolute; display: block; left: 183.5px; top: 218.5px;" onclose="fnLoginUnloadAlert()">
<div id="Div_AlertWin" style="position:absolute;display:none" onclose="fnLoginUnloadAlert()">
因此,这里我们需要更改为
style=“position:absolute;display:block”
,然后他们按照如下方式查找/定位/搜索
WebElement

((JavascriptExecutor)driver).executeScript("document.getElementById('Div_AlertWin').style.display='block';");
WebElement element = driver.findElement(By.id("Div_AlertWin"));

但为什么会这样呢?有一个JS脚本可以更改由
onload
触发的元素的样式,我怎样才能找到它在headless中不能正确运行的原因?@Alexey如果你能确认我的解决方案对你有效,我可以解释我提供的解决方案以及它是如何工作的。我要到13号才能测试它。我会再打给你的。@Alexey你测试过这个吗?我切换到了一个更新版本的Katalon,它有无头Firefox,没有错误。但是为什么它会这样做呢?有一个JS脚本可以更改由
onload
触发的元素的样式,我怎样才能找到它在headless中不能正确运行的原因?@Alexey如果你能确认我的解决方案对你有效,我可以解释我提供的解决方案以及它是如何工作的。我要到13号才能测试它。我会再打给你的。@Alexey你测试过这个吗?我切换到一个更新版本的Katalon,它有无头Firefox,没有错误发生。