Не могу нажать на кнопку с JavaScript с помощью execute_script Selenium - PullRequest
1 голос
/ 13 апреля 2019

enter image description here Я пытаюсь избавиться от всплывающего окна с файлами cookie, принимая файлы cookie и нажимая кнопку подтверждения. У меня нет проблем с нажатием ввода "zgadzam się na", но нажатие кнопки "potwierdź" кажется невозможным. Мой код:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

auction_url='https://www.g2a.com/grand-theft-auto-v-rockstar-key-global-i10000000788017'

driver = webdriver.Chrome()


driver.get(auction_url)

add_popup = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.XPATH, '//*[@id="webklipper-publisher-widget-container-notification-frame"]'))
)

driver.switch_to.frame(driver.find_element_by_xpath('//*[@id="webklipper- 
publisher-widget-container-notification-frame"]'))
print('ads popup detected')
time.sleep(1)
driver.find_element_by_xpath('//*[@id="webklipper-publisher-widget- 
container-notification-close-div"]').click()
print('ads popup closed')
driver.switch_to.default_content()

driver.execute_script("document.querySelector('#cookies-select-all').click();")#works fine
time.sleep(3)
driver.execute_script("document.querySelector('body > div:nth-child(76) > div > div > div > div > div.modal-options__buttons > button.btn.btn-primary').click();")#error

Ошибка, которую я получаю:

selenium.common.exceptions.WebDriverException: Message: javascript error: Cannot read property 'click' of null

Интересно, что когда я выполняю этот js-код в консоли браузера, я не получаю никаких ошибок

Ответы [ 3 ]

4 голосов
/ 13 апреля 2019

Попробуйте приведенный ниже код, работайте нормально со мной:

driver.execute_script("document.querySelector('body > div:nth-child(60) > div > div > div > div > div.modal-options__buttons > button.btn.btn-primary > span').click();")

ИЛИ вы можете найти следующий элемент для поиска элемента

driver.find_element_by_css_selector("div.modal-window button.btn-primary").click()
0 голосов
/ 13 апреля 2019

Вместо

driver.execute_script("document.querySelector('body > div:nth-child(76) > div > div > div > div > div.modal-options__buttons > button.btn.btn-primary').click();")#error

Попробуйте нажать кнопку с помощью CSS-селектора.

WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.CSS_SELECTOR,'button.btn.btn-primary span'))).click()
0 голосов
/ 13 апреля 2019

Я обнаружил, что этот сайт создает сумасшедшее количество <div class="ReactModalPortal"></div>, и я использовал div: nth-child (x), где x - это странное, непостоянное количество пустых div-ов. Мой х был постоянным, поэтому я делал неправильный выбор ...

Вот решение:

driver.execute_script("document.getElementsByClassName('modal-options__buttons')[0].getElementsByTagName('button')[0].click()")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...