Как внедрить JS-скрипт, чтобы сделать navigator.webdriver = false в Selenium, Java - PullRequest
0 голосов
/ 13 июня 2019

Итак, я хочу сделать свой Селен необнаружимым.Я не использую безголовый, и единственный тест, который здесь не проходит здесь , это тест Webdriver, который отмечается, когда navigator.webdriver = true.Я также слежу за этим постом , который кажется довольно информативным, но это все JS Puppeteer, и мне просто нужна тестовая часть Webdriver, и я не могу правильно ее использовать.

Я виделответ на предыдущий вопрос, но, если я не ошибаюсь, это не дает решения, это скорее причина того, почему это происходит.

Я пытался запустить этот JavascriptExecutor (как в виде асинхронного сценария, так и нет)кода (обратите внимание, что я понятия не имею о JS, и это в основном метод проб и ошибок, поскольку язык моего реального приложения - Java):

await page.evaluateOnNewDocument(() => {
  Object.defineProperty(navigator, 'webdriver', {
    get: () => false,
  });
});

Не работает.Я также попытался обернуть его в "async () => {...", ничего.

Фактический код Java, который я пытаюсь запустить:

    String navigatorScript = "await page.evaluateOnNewDocument(() => {\n" +
            "  Object.defineProperty(navigator, 'webdriver', {\n" +
            "    get: () => false,\n" +
            "  });\n" +
            "});";

    // Unrelated stuff here

    driver = new ChromeDriver(options);

    driver.get("https://intoli.com/blog/not-possible-to-block-chrome-headless/chrome-headless-test.html");
    ((JavascriptExecutor)driver).executeAsyncScript(navigatorScript);

Заранее спасибо.

...