Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to deal with the overlay Paused in debugger while automated test execution using Selenium

Everytime I try to access this website and open google-chrome-devtools I am unable to inspect any of the elements through the Inspector as the UI is having an overlay along with a message Paused in debugger.

The upvoted and accepted answer of this discussion says to check the Source tab, check under the Event Listener Breakpoints panel if you've set any breakpoints under 'Mouse'. I have cross checked that none of the Sources -> EventListenerBreakpoint are set.

The upvoted and accepted answer of this discussion says to check if the little octagonal stop/pause sign (at lower left of Chrome "Sources") is colored (blue or purple). I am not sure why do I need to do that additionally for selected websites.

Snapshot:

DebuggerPaused

The upvoted and accepted answer of this discussion speaks about the Manual Steps.

All the solutions seem to point towards the manual process. But this issue seems to me the root cause behind Selenium being unable to getPageSource().

Code trials:

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

Output: Chrome opens but doesn't navigates to the url.

So my questions are:

  • In which case can Paused in debugger error occurs?
  • Is it an error from the frontend development?
  • How can I bypass this error during the Automated Tests through Selenium?
like image 600
undetected Selenium Avatar asked Jun 11 '19 05:06

undetected Selenium


People also ask

What does it mean paused in debugger?

When debugging in chrome, the scripts are always paused in the debugger even if there are no break points set, and if the the pause is un-paused, it again pauses itself.

How to run Selenium in debug mode?

There are two ways to debug Selenium WebDriver. Right-click on the Java class and then select Debug As >Java Application. You can also use Keyboard shortcut keys to run the code in debug mode. Press ALT+SHIFT+D.

What is breakpoint in automation testing?

A breakpoint is a location in your script or keyword test where you want the script or test to pause during execution. Once execution is paused, you can check the state of the test, its output and its variables.


1 Answers

  • In which cases can the Paused in debugger error occur?

    Anytime you are accessing this page with the dev tools open. The debugger; line will pause javascript execution, but browsers will ignore it if the dev tools are closed.

  • Is it an error from the frontend development?

    In this case, no--they're deliberately trying to keep you out. The purpose of this function is to pause execution and then redirect your browser to a different page if it takes longer than 100ms to resume. I would speculate that this is designed to interfere with automated crawlers like selenium, because a regular user wouldn't be affected and a human developer can just hack around it.

  • How can I bypass this error during the Automated Tests through Selenium?

My first recommendation would be to try running Selenium headlessly, if that's an option. If not, use the hotkey to resume execution (F8). You can use whatever method you like for generating a keypress; with the java.awt package it will look something like this:

Robot robot = null;
try
{
   robot = new Robot();
}
catch(Exception e)
{
   //handle failure
}
robot.keyPress(KeyEvent.VK_F8);

Remember that you have to trigger this within 100ms, so use whatever logic you like to detect the block and respond quickly. If you just want something quick and dirty, I would just make it spam F8 keypresses every 50ms for a period of time until you're certain the page has loaded.

EDIT: On further investigation, this page is extremely messy and hostile to anyone with the dev tools open. There is not one but several functions that trigger debugger;and they get called repeatedly on a timer for as long as you're on the page. Running headlessly seems like the best choice, unless you want to continue spamming F8 for the entire session.

like image 125
Miltios Avatar answered Sep 19 '22 01:09

Miltios