Как выполнить javascript в селене - PullRequest
0 голосов
/ 06 апреля 2020

Я пытаюсь автоматизировать процесс с python и селеном. Раньше я использовал селен на разных сайтах, но на этом мне нужно выполнить javascript, и я не знаю как, хотя я нашел несколько уроков по inte rnet.

enter image description here

Мне нужно нажать Quick Entry в этом выпадающем меню, я могу найти элемент с селеном, но я не могу выполнить javascript.

<li id="MENU_QUICKENTRY" tabindex="0" navigateurl="Quickentry.event" onclick="javascript:return getTabData(this.id,event);">
                                        Quick Entry
                                    </li>

Когда я обычно пытаюсь .click (), генерирует исключение ElementNotInteractableException.

Спасибо за ответы .¨

РЕДАКТИРОВАТЬ 2: Обычно это так, и вы должны навести курсор мыши на смягчение, чтобы получить доступ к Быстрый ввод enter image description here

1 Ответ

1 голос
/ 06 апреля 2020

Это исключение произошло из-за того, что другой элемент выше (перекрывает) ваш элемент и когда селен пытается взаимодействовать с ним, другой элемент блокирует его. Поэтому, чтобы избежать этой проблемы, мы можем использовать ActionChains, чтобы перейти к этому элементу, прежде чем щелкнуть по нему.

wait = WebDriverWait(driver, 20)
element = wait.until(EC.element_to_be_clickable((By.XPATH, "//li[contains(text(),'Quick Entry')]")))

actionChains = ActionChains(driver)
actionChains.move_to_element(element).click().perform()

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

from selenium.webdriver.common.action_chains 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

Обновленный раздел :

menu= wait.until(EC.element_to_be_clickable((By.XPATH, "//*[contains(text(),'Mitigation')]")))
submenu = wait.until(EC.element_to_be_clickable((By.XPATH, "//li[contains(text(),'Quick Entry')]")))


hover = ActionChains(driver)
hover.move_to_element(menu).click()
hover.click(submenu)
hover.perform()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...