python selenium,克服 javascript 弹出窗口

python selenium, get over javascript popup

我正在做一个项目,我必须去一个站点并在那里放一个大豆。我正在尝试使用 Python selenium 模块来执行此操作,但是当我使用机器人进入站点时,我会看到一个弹出窗口(关于 cookie 的接受表单)。如果不按接受,我将无法实现我想要做的事情。

我检查了该站点的网络部分,发现该站点包含 cookie,当我进入该站点时,代码正常工作并且成功按下了接受 cookie 按钮,但这不适用于我因为它甚至找不到主站点上的接受按钮,我知道这不是因为它是用 javascript 写的,但我不知道该怎么做。

无论如何,让我们进入代码部分。

on the site I'm trying to login

the site that sent the cookie form the site uses

此代码适用于 this:

from selenium import webdriver
import time
from bs4 import BeautifulSoup
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys

option = webdriver.ChromeOptions()
option.add_argument('--disable-notifications')
option.add_argument("--mute-audio")

driver = webdriver.Chrome("chromedriver.exe", options=option)


driver.get('https://consent-pref.trustarc.com/?type=jefftest_ibm&site=ibm.com&action=notice&country=tr&locale=tr&behavior=expressed&gtm=1&layout=default_eu&irm=undefined&from=https://consent.trustarc.com/#')


time.sleep(10)
driver.find_elements_by_class_name("call")[0].click()

但它对另一个不起作用,我怎样才能让它对另一个也起作用?

您可以改用 pyautogui 来刺激点击:

import pyautogui

pyautogui.click(x=100, y=200)

@The Pilot Dude 的回答在某种程度上是有效的,但不能说是非常动态的所以:

我访问了原始 chrome 的网站并接受了 cookie 并保存了这些 cookie。当我稍后不得不重新进入该站点时,我重新加载了 cookie。

用于下载 cookie:

import pickle
import time
from selenium import webdriver

option = webdriver.ChromeOptions()
option.add_argument("--disable-notifications")
option.add_argument("--mute-audio")
option.add_argument("user-data-dir=C:\Users\___*******__\AppData\Local\Google\Chrome\User Data")
driver = webdriver.Chrome(options = option)

driver.get('https://speech-to-text-demo.ng.bluemix.net/')

time.sleep(10)#in this time I accepted cookies

pickle.dump(driver.get_cookies(), open("cookies.pkl","wb"))#for download cookies

然后我可以使用 cookies chromedriver.exe

使用 cookies:

import pickle
from selenium import webdriver

option = webdriver.ChromeOptions()
option.add_argument("--disable-notifications")
option.add_argument("--mute-audio")
driver = webdriver.Chrome("chromedriver.exe", options = option)

driver.get('https://speech-to-text-demo.ng.bluemix.net/')

file = open("cookies.pkl","rb")
cookies = pickle.load(file)
for cookie in cookies:
    driver.add_cookie(cookie)#for use cookies
file.close()