尽管我意识到这不是“好的”做法-我有一个用例,需要将Selenium驱动程序指向(连接)我的默认Chrome会话/配置文件。
我的默认个人资料在这里:
~/Library/Caches/Google/Chrome/Default
这是我当前的设置方式:(不起作用)
from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument("--user-data-dir=~/Library/Caches/Google/Chrome")
options.add_argument("--profile-directory=Default")
browser = webdriver.Chrome(options=options, executable_path=r"./chromedriver")
browser.get("http://google.com")
Run Code Online (Sandbox Code Playgroud)
我正在使用Chrome版本74.0.3729.169和chromedriver版本ChromeDriver 74.0.3729.6(这是兼容版本)。
Chrome打开后,我在Chrome的设置中看不到任何Cookie,因此很明显它没有指向我的默认会话。另外,我看到Selenium已经创建了一个目录(这似乎表示该目录无法连接到的会话)~/Library/Caches/Google/Chrome/Default。
如何将硒连接到默认的Chrome会话?这与正常打开Chrome浏览器时看到的会话相同。
我已经看过另一个问题,但是那里的答案无法解决如何将Selenium指向默认会话。另外-这是一个过时的问题-从那时起,Chrome和Chromedriver取得了很大进步。另外,这里的问题假定发布者能够连接到默认会话-我无法执行此操作,这表明此后Chromedriver / Chrome已经更改。这个问题也是针对Windows的-我在Mac上工作方式有所不同。
cookies selenium google-chrome session-cookies selenium-webdriver
我一直在关注如何使用硒自动实现阴影DOM元素的讨论。与#shadow-root (open)元素一起工作。
在通过“ 硒”访问url时出现Clear data的“ 清除浏览数据”弹出窗口中定位按钮的过程中,我无法找到以下元素:chrome://settings/clearBrowserData
#shadow-root (open)
<settings-privacy-page>
Run Code Online (Sandbox Code Playgroud)
快照:
使用Selenium,以下是我的代码试用以及遇到的相关错误:
尝试1:
WebElement root5 = shadow_root4.findElement(By.tagName("settings-privacy-page"));
Run Code Online (Sandbox Code Playgroud)
错误:
Exception in thread "main" org.openqa.selenium.JavascriptException: javascript error: b.getElementsByTagName is not a function
Run Code Online (Sandbox Code Playgroud)尝试2:
WebElement root5 = shadow_root4.findElement(By.cssSelector("settings-privacy-page"));
Run Code Online (Sandbox Code Playgroud)
错误:
Exception in thread "main" org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"css selector","selector":"settings-privacy-page"}
Run Code Online (Sandbox Code Playgroud)尝试3:
WebElement root5 = (WebElement)((JavascriptExecutor)shadow_root4).executeScript("return document.getElementsByTagName('settings-privacy-page')[0]");
Run Code Online (Sandbox Code Playgroud)
错误:
Exception in thread "main" java.lang.ClassCastException: org.openqa.selenium.remote.RemoteWebElement cannot be cast to org.openqa.selenium.JavascriptExecutor …Run Code Online (Sandbox Code Playgroud)