小编西门吹*_*门吹雪的帖子

chromedriver window.navigator.webdriver 标志在 chrome v80+ 中为真

我正在使用 selenium chromeDriver 进行自动化测试。但我不能“隐藏”该window.navigator.webdriver财产。当我通过驱动程序打开 chrome(v64-80.0.3987.100) 时,在控制台中查看时它总是返回 true。这是我的代码:

System.setProperty("webdriver.firefox.marionette", "false");
System.setProperty("webdriver.chrome.driver", webDriverPath);
ChromeOptions options = new ChromeOptions();
options.addArguments("--no-sandbox");
options.addArguments("--disable-extensions");
options.addArguments("--blink-settings=imagesEnabled=false");
options.addArguments("--disable-infobars");
options.addArguments("--disable-dev-shm-usage");
options.setExperimentalOption("useAutomationExtension", false);
options.addArguments("--incognito");
options.addArguments("--start-maximized");
options.setExperimentalOption("excludeSwitches", new String[]{"enable-automation"});
options.addArguments("--lang=zh-CN,zh,en");
options.addArguments("--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36");
options.addArguments("--window-size=1920,1080");
ChromeDriver driver = new ChromeDriver(options);
driver.executeScript("Object.defineProperty(navigator, \"webdriver\", {\n" + "    get()  { return undefined; },\n" + "    set(v) { return v; },\n" + "    configurable: true,\n" + "    enumerable: false\n" + "});");
driver.manage().timeouts().pageLoadTimeout(30L, TimeUnit.SECONDS);
driver.manage().timeouts().setScriptTimeout(5L, TimeUnit.SECONDS); …
Run Code Online (Sandbox Code Playgroud)

java selenium google-chrome webdriver selenium-chromedriver

2
推荐指数
1
解决办法
2302
查看次数