python - 有没有办法解决 selenium 浏览器中的 cookie 和隐私弹出窗口?

标签 python selenium beautifulsoup

所以我正在尝试使用 selenium 和 bs4 制作一个 python 脚本来自动从 adidas.com 购买鞋子。只是每当 selenium 浏览器启动 adidas 网站时,它都会显示一个有关 cookie 和隐私的弹出窗口。我无法使用 selenium 单击“接受”按钮(找不到要单击的元素),并且我尝试使用包含 cookie 等的 Firefox 配置文件启动 selenium 浏览器。但它仍然显示该死的弹出窗口并且它正在停止脚本。 有办法解决这个问题吗?

尝试使用 Firefox cookie 启动 Selenium ,如下所示:

ffprofile = webdriver.FirefoxProfile(r'C:\Users\chico\AppData\Local\Mozilla\Firefox\Profiles\e5108gza.default')
driver = webdriver.Firefox(firefox_profile=ffprofile)
driver.get('https://www.adidas.nl/on/demandware.store/Sites-adidas-NL-Site/nl_NL/MyAccount-CreateOrLogin')
driver.find_element_by_xpath("//input[@id='dwfrm_login_username']").send_keys('email')
driver.find_element_by_xpath("//input[@id='dwfrm_login_password']").send_keys('password')
driver.find_element_by_xpath("//button[@value='Inloggen']").click()

来自阿迪达斯网站的弹出窗口不断弹出并阻止我的脚本继续。有时会在停止之前填写电子邮件和密码,有时会在此之前停止。

最佳答案

我最近遇到了同样的问题,这SO令人沮丧,因为它无法通过“切换到警报”来处理strong> 和“接受”有时会接近。

这是我解决问题的方法。首先,这是最重要的,您需要以显示 cookie 接受弹出窗口的方式“检查”正在为其编写 Selenium 代码的页面。

对我来说,我使用的是 Chrome 驱动程序,因此为了检查页面,我必须运行隐身模式,这样页面就不会知道我已经接受了 cookie。使用Firefox的方法也能达到同样的效果。

然后您可以找到接受按钮的元素 ID(或类名称),并在命令末尾添加单击。我执行此操作的代码如下所示:

from selenium import webdriver
import time

URL = "http:some_site.com"
driver = webdriver.Chrome()
driver.get(URL)
time.sleep(5)
driver.find_element_by_id(the_id_name_for_cookie_acceptance_as_a_string).click()

# Do more stuff ...

现在,如果您遇到一个不会充当警报的 cookie 对话框,您可以处理它。

关于python - 有没有办法解决 selenium 浏览器中的 cookie 和隐私弹出窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54429500/

相关文章:

如果类实例化对象不存在,Python 避免方法调用?

python - 获取一项的元素查找 FindALL 列表

python - 如何在 django 中注册查找?

python - 如何在Python的sqlite3中选择数据列表是所有列的子集

python - 无法将模块上传到 PyPi

python - 如何让 Pandas 忽略标题行开头的 `#` ?

java - 使用 selenium xpath 动态查找前一个兄弟元素

python - 如何获取文本的 CSS 选择器

java - 文本区域值未使用 Selenium

python - BeautifulSoup页面抓取时出现KeyError