Отправить ключи на элемент HTML с помощью Selenium - PullRequest
0 голосов
/ 02 февраля 2020

Я пишу сценарий автоматизации ставок на спорт в Python с использованием Selenium. Я застрял в точке, где Selenium не может щелкать или отправлять ключи для указанного элемента c HTML, выделенного на следующем снимке экрана (https://i.stack.imgur.com/NbljY.png).

Вот что я пробовал:

from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://www.bet365.com")
### Some code here to navigate to a particular match
driver.switch_to.frame(bet_driver.find_element_by_tag_name("iframe"))
elem = driver.find_element_by_class_name("bs-Stake")
elem.click()
elem.send_keys("100")

Это возвращает следующую ошибку:

ElementNotInteractableException: Element <div class="bs-Stake"> is not reachable by keyboard

Если я попытаюсь вместо

elem = driver.find_element_by_class_name("stk bs-Stake_TextBox")

Я получаю сообщение об ошибке:

NoSuchElementException: Unable to locate element: .stk bs-Stake_TextBox

Буду признателен за помощь при переходе к элементу HTML, щелчке и отправке ключей, используя любой метод, доступный в Selenium.

Ответы [ 2 ]

0 голосов
/ 02 февраля 2020

Попробуйте sendkeys с webdriver wait, чтобы элемент мог взаимодействовать.

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

element = WebDriverWait(driver, 50).until(EC.visibility_of_element_located((CSS_SELECTOR, ".stk.bs-Stake_TextBox")))
element.send_keys("100")
0 голосов
/ 02 февраля 2020

Хотя CSS стили наследуются ... обозначения классов - нет. Ваш селектор css содержит три отдельных класса, но в выборке вашего элемента только один.

Selenium предназначен для имитации c тех же действий, которые может выполнять человек ... ошибка предполагает, что поле недоступно для взаимодействия .... выяснить почему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...