在头部Chrome中可见Div,在无头Chrome中看不到

时间:2017-11-02 10:09:59

标签: google-chrome selenium selenium-chromedriver google-chrome-headless katalon-studio

我正在尝试在Katalon Studio中测试我们软件的登录页面(它使用Selenium),并且无头Chrome不会呈现iframe显示欢迎消息。WebUI.verifyElementVisible失败而{ {1}}成功。屏幕截图也没有显示。标题Chrome运行测试没有打嗝。

当我在无头模式下从命令行运行Chrome时,其WebUI.verifyElementPresent选项会产生截断输出,但我可以看到iframe的div容器是不可见的:

--dump-dom

当我在标题Chrome中查看它时,它是可见的,

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

它看起来像一个启动的JS脚本,显示div无法在无头Chrome中正确运行。如何调试其JS执行?我无法使用<div id="Div_AlertWin" style="position: absolute; display: block; left: 183.5px; top: 218.5px;" onclose="fnLoginUnloadAlert()"> ,因为appspot被公司防火墙阻止。

1 个答案:

答案 0 :(得分:0)

根据您提供的HTML,Normal Chrome Browser会将HTML DOM呈现如下:

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

Headless Chrome Browser呈现HTML DOM的位置如下:

<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"));