每次我尝试访问此website并打开google-chrome-devtools时,由于UI覆盖着消息 {{1},因此无法通过检查器检查任何元素}} 。
upvoted and accepted answer of this discussion说要检查“源”选项卡,请检查“事件侦听器断点”面板下的“鼠标”下是否设置了任何断点。我已经交叉检查了是否未设置Paused in debugger
-> Sources
。
upvoted and accepted answer of this discussion说要检查八角形的小停止/暂停符号(在Chrome“来源”的左下角)是否为彩色(蓝色或紫色)。我不确定为什么需要对选定的网站另外进行此操作。
快照:
upvoted and accepted answer of this discussion谈到手动步骤。
所有解决方案似乎都指向手动过程。但是在我看来,这个问题似乎是Selenium无法EventListenerBreakpoint
背后的根本原因。
代码试用:
getPageSource()
输出:Chrome打开,但不导航到该URL。
所以我的问题是:
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");
错误?答案 0 :(得分:7)
在哪种情况下会发生Paused in debugger
错误?
任何时候您只要打开开发工具即可访问此页面。 debugger;
行将暂停javascript执行,但是如果关闭开发工具,浏览器将忽略它。
前端开发是否出错?
在这种情况下,不会-他们故意将您拒之门外。此功能的目的是暂停执行,然后在恢复时间超过100毫秒时将您的浏览器重定向到其他页面。我推测这是为了干扰诸如硒之类的自动爬虫,因为普通用户不会受到影响,而人类开发人员也可以入侵它。
如何在通过硒的自动测试过程中绕过此错误?
我的第一个建议是尝试无头运行Selenium,如果可以的话。如果不是,请使用热键恢复执行(F8)。。您可以使用喜欢的任何方法来生成按键。使用java.awt包,它将看起来像这样:
Robot robot = null;
try
{
robot = new Robot();
}
catch(Exception e)
{
//handle failure
}
robot.keyPress(KeyEvent.VK_F8);
请记住,您必须在100ms内触发此操作,因此请使用您喜欢的任何逻辑来检测该块并快速响应。如果您只想要快速又脏的东西,我会让它每隔50毫秒按F8键一次,直到您确定页面已加载为止。
编辑:在进一步调查中,此页面非常混乱,并且对任何打开了开发工具的人都怀有敌意。触发debugger;
的函数不是一个,只有几个函数,只要您在页面上,它们就会在计时器上反复被调用。除非您想在整个会话期间继续向F8发送垃圾邮件,否则无头运行似乎是最好的选择。