Я пытаюсь сделать так, чтобы этот сценарий установил флажок «Я прочитал и согласен с условиями и услугами», как показано на фотографии, выделенный - это html для самого флажка. введите описание изображения здесь

Это код, который я использую, чтобы найти и установить флажок

tos_checkbox = browser.find_element_by_xpath("//input[@id='mat-checkbox-1-input']")
tos_checkbox.click()

Когда я запускаю скрипт, я получаю сообщение об ошибке:

selenium.common.exceptions.ElementNotInteractableException: Message: Element <input id="mat-checkbox-1-input" class="mat-checkbox-input cdk-visually-hidden" type="checkbox"> could not be scrolled into view

Есть идеи, как исправить?

Вот копия полного сценария, если это необходимо.

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from time import sleep

browser = webdriver.Firefox()
browser.implicitly_wait(5)

browser.get('https://onlinebusiness.icbc.com/webdeas-ui/login;type=driver')

lastname_input = browser.find_element_by_xpath("//input[@id='mat-input-0']")
licensenumber_input = browser.find_element_by_xpath("//input[@id='mat-input-1']")
keyword_input = browser.find_element_by_xpath("//input[@id='mat-input-2']")

lastname_input.send_keys("<lastname>")
licensenumber_input.send_keys("<licensenumber>")
keyword_input.send_keys("<keyword>")

tos_checkbox = browser.find_element_by_xpath("//input[@id='mat-checkbox-1-input']")
tos_checkbox.click()

login_button = browser.find_element_by_xpath("//button[@class='mat-raised-button']")
login_button.click()

sleep(5)

browser.close()
1
TheDemonicSky 21 Янв 2021 в 12:51

2 ответа

Лучший ответ

Просто нажмите на родительский элемент (с './ ..'), и он будет работать нормально:

tos_checkbox = brower.find_element_by_xpath("//input[@id='mat-checkbox-1-input']/./..")
tos_checkbox.click()

С уважением !

1
Jonathan PETIT 21 Янв 2021 в 10:04

Используйте следующее.

wait = WebDriverWait(browser, 10)
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "#mat-checkbox-1 > label > div"))).click()

Импортировать

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC
0
Arundeep Chohan 21 Янв 2021 в 10:08
65824885