selenium python javascript нажмите кнопку

#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-адрес? Я хочу проверить, где находится элемент.