document.querySelector() successfully clicks ClearData button but fails through executeScript()

441 views
Skip to first unread message

Debanjan Bhattacharjee

unread,
Jun 11, 2019, 9:31:27 AM6/11/19
to Selenium Users
Hello Everyone,

I was trying to click on the Clear data button within Clear browsing data popup which appears on invoking the url chrome://settings/clearBrowserData

Through  google-chrome-devtools -> Console the element is identified properly through the command:

document.querySelector('settings-ui').shadowRoot.querySelector('settings-main').shadowRoot.querySelector('settings-basic-page').shadowRoot.querySelector('settings-section > settings-privacy-page').shadowRoot.querySelector('settings-clear-browsing-data-dialog').shadowRoot.querySelector('#clearBrowsingDataDialog').querySelector('#clearBrowsingDataConfirm')

Snapshot:

ClearData_identified

But when the same command is invoked through executeScript() it's giving an error as:

org.openqa.selenium.JavascriptException: javascript error: Cannot read property 'shadowRoot' of null

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"); 
 driver = new ChromeDriver(options); 
 driver.get("chrome://settings/clearBrowserData"); 
 JavascriptExecutor js = (JavascriptExecutor) driver; 
 WebElement clearData1 = (WebElement) js.executeScript("return document.querySelector('settings-ui').shadowRoot.querySelector('settings-main').shadowRoot.querySelector('settings-basic-page').shadowRoot.querySelector('settings-section > settings-privacy-page').shadowRoot.querySelector('settings-clear-browsing-data-dialog').shadowRoot.querySelector('#clearBrowsingDataDialog').querySelector('#clearBrowsingDataConfirm')"); 
 clearData1.click(); 
 System.out.println("Clear data Button Clicked");
```

Error stack trace:

```
Starting ChromeDriver 75.0.3770.8 (681f24ea911fe754973dda2fdc6d2a2e159dd300-refs/branch-heads/3770@{#40}) on port 13829
Only local connections are allowed.
Please protect ports used by ChromeDriver and related test frameworks to prevent access by malicious code.
Jun 11, 2019 6:27:52 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: W3C
Exception in thread "main" org.openqa.selenium.JavascriptException: javascript error: Cannot read property 'shadowRoot' of null
  (Session info: chrome=75.0.3770.80)
Build info: version: '3.14.0', revision: 'aacccce0', time: '2018-08-02T20:13:22.693Z'
System info: host: 'DEBANJAN', ip: '192.168.1.125', os.name: 'Windows 8', os.arch: 'amd64', os.version: '6.2', java.version: '1.8.0_172'
Driver info: org.openqa.selenium.chrome.ChromeDriver
Capabilities {acceptInsecureCerts: false, browserName: chrome, browserVersion: 75.0.3770.80, chrome: {chromedriverVersion: 75.0.3770.8 (681f24ea911fe7..., userDataDir: C:\Users\Debanjan.B\AppData...}, goog:chromeOptions: {debuggerAddress: localhost:4911}, javascriptEnabled: true, networkConnectionEnabled: false, pageLoadStrategy: normal, platform: XP, platformName: XP, proxy: Proxy(), setWindowRect: true, strictFileInteractability: false, timeouts: {implicit: 0, pageLoad: 300000, script: 30000}, unhandledPromptBehavior: dismiss and notify}
```

Am I missing something obvious here?

Thanks in advance for your help.

Regards
Dev
Reply all
Reply to author
Forward
0 new messages