Как использовать событие onclick в качестве селектора в webdriver?

Вот элемент:

<label title="Place Order" style="cursor: pointer" onclick="AjaxPageLoad(fno, 'FNOOrder');">Place Order<div></div></label>

Я пытаюсь щелкнуть по нему, но нужно использовать его @onclickкак основной дифференциатор. Я читал другие подобные вопросы, но не могу заставить это работать:

driver.find_element_by_xpath("//a[contains(@onclick,'fno')]").click()

driver.find_element_by_xpath("//a[contains(@onclick,'FNOOrder')]").click()

Ошибка:

ElementNotInteractableException: Message: Element <a id="lnkFNO" class="active" href="javascript:void(0)"> could not be scrolled into view

Но элемент виден, поэтому я предполагаю, что это xpathдолжно быть неправильно.

python,selenium,selenium-webdriver,xpath,webdriver,

1

Ответов: 2


1

В соответствии с HTML, который вы поделили, нажмите на нужный элемент, используя onclickсобытие, которое вы должны вызвать WebDriverWait, и вы можете использовать решение follwing:

  • xpath с помощью WebDriverWait ( драйвер , 20 ). до ( EC . element_to_be_clickable (( By . XPATH , "// label [@onclick = " AjaxPageLoad (fno, 'FNOOrder'); "]" ))). click () :

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//label[@title='Place Order'][@onclick="AjaxPageLoad(fno, 'FNOOrder');"]"))).click()
  • xpath, используя onclick и заголовок :

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//label[@title='Place Order'][@onclick="AjaxPageLoad(fno, 'FNOOrder');"][contains(.,'Place Order')]"))).click()
  • xpath, используя onclick , title и innerHTML :

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

Примечание . Необходимо добавить следующие импорты:

driver.find_element_by_css_selector("label[onclick*=fno]").click()

0

Попробуйте использовать селектор css, если вы знакомы с веб-разработкой, это должно быть проще.

onclick

Выше кода будет выбирать метку с onclickаргументом, содержащим строку «fno». Здесь вы можете найти все селекторы: https://www.w3schools.com/cssref/css_selectors.asp

Python, селен, селен-WebDriver, XPath, WebDriver,
Похожие вопросы