0

I initialized a JavascriptExecutor but it doesn't return me what I want. Object is always null.

SeleniumDriver driver = new SeleniumDriver(DriverType.ChromeDriver);
    driver.get("https://www.xxxxxx.info/");
    driver.waitForPageToBeLoaded();
        
    JavascriptExecutor js = (JavascriptExecutor) driver.getWebDriver();
    Object ob = js.executeScript("___grecaptcha_cfg.clients[0]");

Here what it gives me in console:

enter image description here

Why am I not able to get it via JavascriptExecutor?

2
  • Have you double checked ___grecaptcha_cfg.clients[0] to make sure it returns not null? Commented Sep 1, 2020 at 11:32
  • @elMeroMero yes man Commented Sep 1, 2020 at 11:33

1 Answer 1

1

Your js script should return it.try the below changes

Object ob = js.executeScript("return ___grecaptcha_cfg.clients[0]");

so that your code will be like

SeleniumDriver driver = new SeleniumDriver(DriverType.ChromeDriver);
driver.get("https://www.xxxxxx.info/");
driver.waitForPageToBeLoaded();
    
JavascriptExecutor js = (JavascriptExecutor) driver.getWebDriver();
Object ob = js.executeScript("return ___grecaptcha_cfg.clients[0]");

Since it is the JS object json it throws circular reference exception

You can convert to json using below js code

const getCircularReplacer = () => {
  const seen = new WeakSet();
  return (key, value) => {
    if (typeof value === "object" && value !== null) {
      if (seen.has(value)) {
        return;
      }
      seen.add(value);
    }
    return value;
  };
};
JSON.stringify(___grecaptcha_cfg.clients[0], getCircularReplacer());

Since it is cross origin iframe you can use it as chrome blocks it as shown in image below

enter image description here

Sign up to request clarification or add additional context in comments.

6 Comments

gives me Exception in thread "main" org.openqa.selenium.JavascriptException: javascript error: circular reference
Could you please provide me the URL?
@AhmetAzizBeşli It is HTML Dom circular reference and its not a valid json.You should get the required value from javascript and then you should return it to java
is it possible to convert that circular reference to JSON object ?
|

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.