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