google chrome devtools 如何在使用Selenium自动执行测试时处理调试器中暂停的覆盖
每次我尝试访问并打开此文件时,我都无法通过检查器检查任何元素,因为UI有一个覆盖,并且在调试器中暂停了一条消息google chrome devtools 如何在使用Selenium自动执行测试时处理调试器中暂停的覆盖,google-chrome-devtools,javascript,selenium,debugging,google-chrome-devtools,breakpoints,google Chrome Devtools,Javascript,Selenium,Debugging,Google Chrome Devtools,Breakpoints,每次我尝试访问并打开此文件时,我都无法通过检查器检查任何元素,因为UI有一个覆盖,并且在调试器中暂停了一条消息 要检查“源”选项卡,请在“事件侦听器断点”面板下检查是否在“鼠标”下设置了任何断点。我已交叉检查是否未设置源->事件列表断点 检查小八角形停止/暂停标志(位于铬“源”的左下方)是否为彩色(蓝色或紫色)。我不知道为什么我需要为选定的网站做额外的 快照: 第二部分讲述了手动步骤 所有的解决方案似乎都指向手动过程。但在我看来,这个问题似乎是无法getPageSource()的根本原因 代码
要检查“源”选项卡,请在“事件侦听器断点”面板下检查是否在“鼠标”下设置了任何断点。我已交叉检查是否未设置源
->事件列表断点
检查小八角形停止/暂停标志(位于铬“源”的左下方)是否为彩色(蓝色或紫色)。我不知道为什么我需要为选定的网站做额外的
快照:
第二部分讲述了手动步骤
所有的解决方案似乎都指向手动过程。但在我看来,这个问题似乎是无法getPageSource()
的根本原因
代码试用:
System.setProperty("webdriver.chrome.driver", "C:\\Utility\\BrowserDrivers\\chromedriver.exe");
ChromeOptions options = new ChromeOptions();
options.addArguments("start-maximized");
options.addArguments("disable-infobars");
options.addArguments("--disable-extensions");
WebDriver driver = new ChromeDriver(options);
driver.get("http://rd.huangpuqu.sh.cn/website/html/shprd/shprd_tpxw/List/list_0.htm");
输出:Chrome会打开,但不会导航到url
因此,我的问题是:
- 在哪种情况下会发生调试器中暂停的
错误
- 这是前端开发的错误吗
- 在通过Selenium进行自动化测试期间,如何绕过此错误
- 在哪些情况下会发生调试器中暂停的
错误 在开发工具打开的情况下随时访问此页面。
调试器代码>行将暂停javascript执行,但如果开发工具关闭,浏览器将忽略它
- 这是前端开发的错误吗 在这种情况下,他们故意把你挡在外面。此功能的目的是暂停执行,然后在恢复所需时间超过100毫秒时将浏览器重定向到其他页面。我推测,这是为了干扰像selenium这样的自动爬虫程序,因为普通用户不会受到影响,而人类开发人员可以绕过它
- 在通过Selenium进行自动化测试期间,如何绕过此错误
Robot robot = null;
try
{
robot = new Robot();
}
catch(Exception e)
{
//handle failure
}
robot.keyPress(KeyEvent.VK_F8);
请记住,您必须在100毫秒内触发此事件,因此请使用您喜欢的任何逻辑来检测该块并快速响应。如果你只是想快速和肮脏的东西,我会让它垃圾邮件F8键每50毫秒一段时间,直到你确定页面已加载
编辑:在进一步调查中,此页面非常混乱,对任何打开开发工具的人都怀有敌意。触发调试器的函数不是一个而是几个只要你在页面上,它们就会被计时器反复调用。无头运行似乎是最好的选择,除非您想在整个会话中继续发送F8。
- 在哪些情况下会发生调试器中暂停的
错误
在开发工具打开的情况下随时访问此页面。调试器代码>行将暂停javascript执行,但如果开发工具关闭,浏览器将忽略它
- 这是前端开发的错误吗
在这种情况下,他们故意把你挡在外面。此功能的目的是暂停执行,然后在恢复所需时间超过100毫秒时将浏览器重定向到其他页面。我推测,这是为了干扰像selenium这样的自动爬虫程序,因为普通用户不会受到影响,而人类开发人员可以绕过它
- 在通过Selenium进行自动化测试期间,如何绕过此错误
我的第一个建议是尝试无头运行Selenium,如果可以的话。如果没有,请使用热键继续执行(F8)。您可以使用任何方法生成按键;在java.awt包中,它将如下所示:
Robot robot = null;
try
{
robot = new Robot();
}
catch(Exception e)
{
//handle failure
}
robot.keyPress(KeyEvent.VK_F8);
请记住,您必须在100毫秒内触发此事件,因此请使用您喜欢的任何逻辑来检测该块并快速响应。如果你只是想快速和肮脏的东西,我会让它垃圾邮件F8键每50毫秒一段时间,直到你确定页面已加载
编辑:在进一步调查中,此页面非常混乱,对任何打开开发工具的人都怀有敌意。触发调试器的函数不是一个而是几个只要你在页面上,它们就会被计时器反复调用。无头运行似乎是最好的选择,除非您想在整个会话中继续发送F8。我使用了--headless
。。。这可能与配置文件有关…故意添加了暂停
,以防止您在打开Devtool后分析页面中的脚本。这不是一个错误,也不会影响通过Selenium执行。请注意,页面中的脚本在加载Selenium时重定向到不同的内容,最有可能是通过指纹。我使用了--headless
。。。这可能与配置文件有关…故意添加了暂停
,以防止您在打开Devtool后分析页面中的脚本。这不是一个错误,也不会影响通过Selenium执行。请注意,页面中的脚本在加载Selenium时会重定向到不同的内容,很可能是通过指纹。如果您的答案不起作用,可以复制/粘贴完整代码吗?@sgrillon=>为什么您认为这个答案不起作用?按键事件f8将不会发送到使用f8的dev tab?,代码http://rd.huangpuqu.sh.cn/website/html/shprd/shprd_tpxw/List/l