невозможно найти решение по селену для постоянного наложения - PullRequest
0 голосов
/ 20 ноября 2018

Я ищу решение на этом конкретном веб-сайте , чтобы нажать кнопку с XPath = '// * [@ id = "num-pad"] / button [3]', но я продолжаю терпеть неудачу

текущее поведение

Использование этого фрагмента кода

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
browser = webdriver.Firefox()
timeout=20
browser.set_page_load_timeout(timeout)
browser.get("https://www.amundi-ee.com/psf/#login")
button='//*[@id="num-pad"]/button[3]'
login='//*[@id="identifiant"]'
cbutton='//*[@id="maploginKeyboard"]/area[8]'

WebDriverWait(browser, timeout).until(EC.visibility_of_element_located((By.XPATH, button)))

browser.find_element(By.XPATH, button).click()

У меня исключение

selenium.common.exceptions.ElementClickInterceptedException: Сообщение: Элемент .... не активен в точке (841.5483,25), потому что другой элемент ..... скрывает его

Так что я немного копаю интернетиз того, что я обнаружил, похоже, возникла проблема с постоянным наложением, но при замене последней строки на приведенную ниже не нажимается назначенная кнопка

element = browser.find_element(By.XPATH, button)
browser.execute_script("arguments[0].click();", element)

Ожидаемое поведение

Найтифрагмент кода, который позволяет нажать на обозначенную кнопку со следующим XPath = '//*[@id="num-pad"]/button[3]'

1 Ответ

0 голосов
/ 20 ноября 2018

У меня была такая же проблема пару раз ...

Мое лучшее решение для вас - использовать ActionChains.

Я добавил его в ваш код, и он работаетдля меня!

Вот рабочий фрагмент:

from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
browser = webdriver.Firefox()
timeout=20
browser.set_page_load_timeout(timeout)
browser.get("https://www.amundi-ee.com/psf/#login")
button='//*[@id="num-pad"]/button[3]'
login='//*[@id="identifiant"]'
cbutton='//*[@id="maploginKeyboard"]/area[8]'

WebDriverWait(browser, timeout).until(EC.visibility_of_element_located((By.XPATH, button)))
print("found the element")

my_buttton = browser.find_element(By.XPATH, button)

action = ActionChains(browser)
action.move_to_element_with_offset(my_buttton, 5, 5)
action.click()
action.perform()

Надеюсь, вы найдете это полезным!

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