#javascript #python #selenium #popup
#javascript #python #селен #всплывающее окно
Вопрос:
Я работаю над проектом, и мне нужно зайти на сайт и бросить туда сою. Я пытаюсь сделать это с помощью модуля Python selenium, но когда я захожу на сайт с помощью бота, я получаю всплывающее окно (форма принятия файлов cookie). Я не могу добиться того, что пытаюсь сделать, не нажимая accept.
Я проверил сетевой раздел сайта и обнаружил сайт, содержащий файлы cookie, когда я захожу на этот сайт, код работает правильно, и ему удается нажать кнопку «Принять файлы cookie», но у меня это не работает, потому что он даже не может найти кнопку «Принять» на главном сайте, я знаю, что это не потому, чтоон написан на javascript, но я не знаю, как это сделать.
В любом случае, давайте перейдем к части кода.
на сайте я пытаюсь войти в систему
сайт, который отправил форму cookie, использует сайт
этот код работает для этого:
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_ibmamp;site=ibm.comamp;action=noticeamp;country=tramp;locale=tramp;behavior=expressedamp;gtm=1amp;layout=default_euamp;irm=undefinedamp;from=https://consent.trustarc.com/#')
time.sleep(10)
driver.find_elements_by_class_name("call")[0].click()
но это не работает для другого, как я могу заставить это работать и для другого?
Ответ №1:
Вместо этого вы могли бы использовать pyautogui для стимулирования нажатия:
import pyautogui
pyautogui.click(x=100, y=200)
Комментарии:
1. мой код уже работает для этого сайта, это сайт, который не работает 🙂
2. После нескольких попыток я нашел правильные координаты, и это сработало, поэтому я хочу спросить вас кое о чем, есть ли способ найти координаты прямой кнопки без попыток?
3. Я не думаю, что есть. Вы могли бы использовать
pyautogui.position()
для получения позиции и использовать команды try и except, чтобы попытаться выяснить, где находится кнопка, но, насколько мне известно, нет прямого способа получить местоположение кнопки с помощью pyautogui
Ответ №2:
Ответ @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\___*******__\AppDataLocal\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
и после этого я могу использовать файлы cookie для chromedriver.exe
для использования файлов cookie:
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()