如何在常规chrome而不是chromedriver中运行selenium代码



这里有一个示例代码来解释我的问题。

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
def test():
username = "gmail"
password = "password"
driver = webdriver.Chrome("C://Users//Dell//Desktop//chromedriver.exe")
driver.implicitly_wait(15)
driver.get("http://www.facebook.com")
elem = driver.find_element_by_name("email")
elem.send_keys(username)
elem = driver.find_element_by_name("pass")
elem.send_keys(password)
elem.send_keys(Keys.RETURN)
#code after logging
test()

每当我运行此代码时,代码都会在单独的chromedriver窗口中运行。

我想让我的代码在登录facebook后做一些事情。每次我重定向到facebook时,网站都会要求我允许通知。因此,整个屏幕都变黑了,唯一可点击的元素是弹出窗口。因此所有其他元素都变得不可擦除。所以我得到了这个错误。

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate 
element: 

如果我能在我的常规浏览器中运行这段代码,我已经允许/拒绝了facebook的通知。弹出窗口不会再次出现,错误也不会发生。

如何在常规浏览器中运行此代码?

您可以使用以下配置简单地关闭弹出的通知:

from selenium.webdriver.chrome.options import Options
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
# config to remove pop ups
opt = Options()
opt.add_argument("--disable-infobars")
opt.add_argument("start-maximized")
opt.add_argument("--disable-extensions")
# you can change the values below. 0 means off and 1 means on.
opt.add_experimental_option("prefs", { 
"profile.default_content_setting_values.media_stream_mic": 1, 
"profile.default_content_setting_values.media_stream_camera": 0,
"profile.default_content_setting_values.geolocation": 0,
"profile.default_content_setting_values.notifications": 1
})
def test():
username = "gmail"
password = "password"
driver = webdriver.Chrome("C://Users//Dell//Desktop//chromedriver.exe", options=opt)
driver.implicitly_wait(15)
driver.get("http://www.facebook.com")
elem = driver.find_element_by_name("email")
elem.send_keys(username)
elem = driver.find_element_by_name("pass")
elem.send_keys(password)
elem.send_keys(Keys.RETURN)
#code after logging
test()

这是一个非常简单的修复程序,您可以通过将1更改为0来禁用通知。

相关内容

  • 没有找到相关文章

最新更新