不能使用带有硒的镀铬按钮
Posted
技术标签:
【中文标题】不能使用带有硒的镀铬按钮【英文标题】:Cannot use chrome cast button with selenium 【发布时间】:2017-07-23 20:23:18 【问题描述】:我正在尝试使用 Selenium 将 youtube 视频投射到我的 chromecast。当我通常在 chrome 中打开 youtube 时,我会看到投射按钮,它工作正常。当我用 Selenium 打开它时,缺少投射按钮,当我从菜单中选择投射时,它给我一个错误“找不到投射目的地。需要帮助吗?”
我正在使用 python,并尝试了许多标志与 webdriver 的组合。这是我所拥有的
options = webdriver.ChromeOptions()
options.add_argument('--user-data-dir=./ChromeProfile')
options.add_argument('--disable-session-crashed-bubble')
options.add_argument('--disable-save-password-bubble')
options.add_argument('--disable-permissions-bubbles')
options.add_argument('--bwsi')
options.add_argument('--load-media-router-component-extension')
options.add_argument('--enable-video-player-chromecast-support');
excludeList = ['disable-component-update',
'ignore-certificate-errors',
]
options.add_experimental_option('excludeSwitches', excludeList)
chromedriverPath = '/my/path/to/chromedriver'
driver = webdriver.Chrome(chromedriverPath, chrome_options=options)
path = 'https://www.youtube.com/watch?v=Bz9Lza059NU'
driver.get(path);
time.sleep(60) # Let the user actually see something!
driver.quit()
【问题讨论】:
您能给我们提供cast button
的快照以了解它的确切位置吗?谢谢
投射按钮是指用于投射到 chromecast 的图标,它位于 youtube 视频底部的全屏图标旁边,看起来像这样images.anandtech.com/doci/7186/…
【参考方案1】:
我想出了如何让它工作。这似乎需要两个步骤。将我的默认配置文件复制到 selenium 的某个地方可以使用它,并找出打开 chrome 时要使用的正确标志。关键是 selenium 自动添加了一堆我不想要的标志,所以我不得不排除一个。
首先要找出我的个人资料存储在哪里,我打开了 chrome 到这个 url chrome://version/
。
这给了我很多信息,但重要的是
命令行: /usr/lib/chromium-browser/chromium-browser --enable-pinch --flag-switches-begin --flag-switches-end
配置文件路径: /home/mdorrell/.config/chromium/Default
首先我将我的个人资料复制到 Selenium 可以使用的某个目录
cp -R /home/mdorrell/.config/chromium/Default/* /home/mdorrell/ChromeProfile
然后我在 selenium 打开的浏览器中打开了同一页面,并从 Command Line
行中获取了 selenium 添加的标志列表。最终给我带来问题的是--disable-default-apps
最后我需要添加的代码看起来像这样
options = webdriver.ChromeOptions()
# Set the user data directory
options.add_argument('--user-data-dir=/home/mdorrell/ChromeProfile')
# get list of flags selenium adds that we want to exclude
excludeList = [
'disable-default-apps',
]
options.add_experimental_option('excludeSwitches', excludeList)
chromedriverPath = '/my/path/to/chromedriver'
driver = webdriver.Chrome(chromedriverPath, chrome_options=options)
path = 'https://www.youtube.com/watch?v=Bz9Lza059NU'
driver.get(path);
time.sleep(60) # Let the user actually see something!
driver.quit()
【讨论】:
是否需要添加用户数据目录?【参考方案2】:感谢@MikeD 分享您的答案。
当我想通过 selenium 浏览器(使用 RSelenium)对 R Shiny Dashboard 进行 chrome 投射时,我遇到了同样的问题。如果我点击 Cast
,它会显示“找不到 Cast 目的地。需要帮助?”,而在普通浏览器中它可以正常工作。
在我的情况下,它在排除两个开关(包括 ChromeProfile 不是必需的)后工作,在 R 中可以这样做:
library(RSelenium)
options <- list()
options$chromeOptions$excludeSwitches <- list('disable-background-networking',
'disable-default-apps')
rD <- rsDriver(verbose = FALSE, port = 4570L, extraCapabilities = options)
【讨论】:
以上是关于不能使用带有硒的镀铬按钮的主要内容,如果未能解决你的问题,请参考以下文章