因此,我正在尝试使用selenium和bs4制作一个python脚本,以便从adidas.com自动购买鞋子。仅仅是每当硒浏览器启动adidas网站时,它就会显示有关cookie和隐私的弹出窗口。我无法使用硒单击接受按钮(找不到要单击的元素),并且我尝试使用包含cookie以及其他内容的firefox配置文件启动硒浏览器。但是它仍然显示该死的弹出窗口,并且正在停止脚本。 反正有解决办法吗?
尝试使用像这样的firefox cookie来启动硒:
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()
阿迪达斯网站的弹出窗口不断弹出并阻止我的脚本继续运行。有时,它会在停止之前先填写电子邮件和密码,有时会在此之前停止。
答案 0 :(得分:0)
我尝试了您发布的代码,但没有弹出任何警报。但是,如果有“警报”窗口,则需要切换到该窗口并接受它来处理
from selenium import webdriver
driver = webdriver.Firefox()
driver.set_page_load_timeout(30)
driver.get('https://www.adidas.nl/on/demandware.store/Sites-adidas-NL-Site/nl_NL/MyAccount-CreateOrLogin')
try:
WebDriverWait(browser, 3).until(EC.alert_is_present(),'Timed out waiting for alert popup')
alert = driver.switch_to.alert
alert.accept()
except:
print "no alert"
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()
答案 1 :(得分:0)
我最近也遇到了同样的问题,很遗憾,因为 “切换为警报” 无法解决 strong>和 “接受” 有时会接近。
这是我解决问题的方法。首先,这是最重要的,您需要“检查”您正在为其编写硒代码的页面,以使Cookie接受弹出窗口显示出来。
对我来说,我使用的是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对话框,则可以对其进行处理。