Div, покрывающий пустое пространство, а также элемент, так что, казалось бы, не щелкают (Python Селен) - PullRequest
1 голос
/ 14 января 2020

Пожалуйста, помогите, потому что это сводит меня с ума.

Это должно быть просто - щелкнуть элемент. Но ради жизни я не могу найти способ сделать это.

Я могу найти его с каждым методом, который я пробовал, но я не могу щелкнуть по нему. Я пробовал по имени класса, по классу XPath, по тексту промежутка XPath, пытался принудительно нажать кнопку javascript. Ничего. Эта синяя кнопка ОК, кажется, не может быть нажата.

Я начинаю думать, что это может быть из-за формы div, которую я добавлю в изображение. Похоже, что div тоже идет слева от кнопки, так что, может быть, это просто нажатие на пустое место рядом с кнопкой, которое также (по какой-либо причине) будет закрыто div? Если да, то есть ли способ указать, какая часть div нажата?

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

browser.find_element_by_class_name('ok')

browser.find_element(By.XPATH, "//div[@class='ok']")

browser.execute_script("arguments[0].click();",
                                  WebDriverWait(browser, 10).until(EC.element_to_be_clickable
                                                                   ((By.Class, "ok"))))

browser.FindElement(By.XPath("//div[@class='ok']/span[@class='OK']"));

HTML code for element in question The OK button I am trying to click the div covering blank space to the left of the button

1 Ответ

0 голосов
/ 16 января 2020

Вам нужно настроить таргетинг на текст тега <span>:

xpath = "//div[@class='ok']/span[contains(., 'OK')]";

browser.find_element_by_xpath(xpath);

Я все еще получаю элемент неинтерактивный ошибка?

Вам нужно " подождите, пока элемент не станет кликабельным. Гоночные условия между браузером и Selenium могут привести к тому, что элемент окажется в DOM, прежде чем вы сможете щелкнуть по нему, например, если у вас есть анимация, в которой объект исчезает.

xpath = "//div[@class='ok']/span[contains(., 'OK')]";
wait = WebDriverWait(browser, 10);
okButton = wait.until(EC.element_to_be_clickable(xpath));

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