Как щелкнуть ссылку javascript: void (0) с селеном? - PullRequest
0 голосов
/ 19 января 2019

Я использую селен и хром, чтобы автоматизировать клики на странице с помощью Python.

Я застреваю, что не могу нажать на следующую ссылку href:

<a href="javascript:void(0)" class="addSuppData-trigger pts" data-target="edit_3-1" style="padding-right:6px;float:right;">
            <i class="material-icons black-text tiny-small">edit</i></a>

Я пытался использовать xpath, css и linktext безрезультатно.

пример кода:

WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="row-group-1"]/td[1]/div/div[2]/a/i' ))).click()

Цель состоит в том, чтобы щелкнуть ручкой, а затем выбрать элемент из раскрывающегося списка. снимок экрана кнопки

Вторая выделенная строка - это ручка. HTML дерево

1 Ответ

0 голосов
/ 19 января 2019

Элемент выглядит как динамический элемент, и чтобы щелкнуть по нему, нужно активировать WebDriverWait , чтобы требуемый элемент был активным для кликабельного , и вы можете использовать одно из следующих решений:

  • Использование CSS_SELECTOR:

    WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "a.addSuppData-trigger.pts[data-target^='edit_']>i.material-icons.black-text.tiny-small"))).click()
    
  • Использование XPATH:

    WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[@class='addSuppData-trigger pts' and starts-with(@data-target, 'edit_')]/i[@class='material-icons black-text tiny-small' and contains(., 'edit')]"))).click()
    
  • Примечание : необходимо добавить следующие операции импорта:

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