#python
#python
Вопрос:
У меня возникли проблемы с моим скриптом selenium. Я хочу создать веб-сайт, который работает на javascript. Я собирал много информации в Интернете, но не могу найти решение. изображение html-кода
изображение моего кода В этом посте я также представил распечатку HTML-кода. В принципе: я хочу нажать кнопку «Принять» при загрузке веб-сайта, но я не могу понять, как это сделать.
поиск решения на разных веб-сайтах.
Можете ли вы, ребята, помочь мне с моим сценарием, я много пытался и тестировал, но не могу понять. Спасибо.
код:
from config import keys
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
import time
def order(k):
chrome_path =
r"C:UsersltewoPycharmProjectslivebettingchromedriver.exe"
driver = webdriver.Chrome(chrome_path)
driver.get(keys['url'])
xpath_button_accept = "//div[@class='cookieButtons']//a[@class='button
accept']"
button_accept = driver.find_element_by_xpath(xpath_button_accept)
xpath_button_accept.click()
if __name__ == '__main__':
order(keys)
Комментарии:
1. Пожалуйста, вставьте свой код вместо картинки.
2. @bhansa, я вставил код.
3. @bhansa спасибо за ваш ответ, но я попытался запустить код со следующей строкой: time.sleep(15). Я все еще получал сообщение об ошибке, что python не смог найти элемент.
4. пожалуйста, попробуйте код в моем ответе, а также проверьте ссылку, которую я вставил в ответ.
5. @bhansa я снова вставил код (обновленный). Теперь я получаю ошибку тайм-аута, так что это означает, что python не может правильно найти указанный xpath?
Ответ №1:
Вы должны дождаться загрузки этого элемента на странице, поэтому используйте:
WebDriverWait(browser, delay).until(EC.presence_of_element_located((By.XPATH, 'XpathOfMyElement')))
Я заметил, что панель cookie находилась внутри iframe и не была доступна напрямую, я обновил приведенное ниже, пожалуйста, проверьте, работает ли она сейчас.
Обновлен ваш код:
from config import keys
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
import time
def order(keys):
chrome_path = r"C:UsersltewoPycharmProjectslivebettingchromedriver.exe"
driver = webdriver.Chrome(chrome_path)
driver.get(keys['url'])
driver.switch_to.frame('r42CookieBar')
button_accept = driver.find_element_by_class_name('accept')
button_accept.click()
if __name__ == '__main__':
order(keys)
Комментарии:
1. похоже, что selenium не может найти кнопку, потому что она отображается с помощью Java script. Возможно, мне нужно использовать другую технику. У вас есть какие-либо предложения?
2. Возможно ли предоставить URL-адрес? чтобы я мог попробовать запустить его один раз.
3. К вашему сведению, я попробовал код на каком-то другом веб-сайте, на котором был такой же баннер cookie, и он работает.
4. это URL: ns.nl . Можете ли вы сказать мне, на каком веб-сайте вы пробовали код?
5. Я попробовал это здесь
Ответ №2:
Попробуйте это:
#update
driver.implicity_wait(10)
xpath_button_accept = "//div[@class='cookieButtons']//a[@class='button accept']"
button_accept = your_browser.find_element_by_xpath(xpath_button_accept)
button_accept.click()
Комментарии:
1. @Wonka- спасибо за ваш ответ. я все еще получаю сообщение об ошибке «невозможно найти элемент». Я вставил экран печати своего кода.
2. @Lobbel можете ли вы опубликовать URL-адрес или полный HTML-код?
3. @Lobbel вы пропустили строку в своем сообщении, строку для получения элемента. (в img все в порядке). Проверьте мое редактирование, implicity_wait
4. спасибо за ваш ответ. Я уже пробовал эту строку раньше: time.sleep(15), просто чтобы протестировать код, но он по-прежнему выдает ошибку. Он не может найти элемент.
5. @Lobbel Я надеюсь, что строка ожидания была после .get (url) правильно? можете ли вы опубликовать URL-адрес? Я хочу проверить, где находится элемент.