Как щелкнуть тег <img>, чтобы развернуть «древовидное представление» с помощью Selenium и Python - PullRequest
0 голосов
/ 26 февраля 2019

Это тег, на котором я хочу выполнить операцию нажатия.Элемент успешно обнаружен, событие click () также принято, но действие не выполняется.

<img class="pointer" id="id53" src="/images/tree/elbow-minus.gif" alt="collapse not last" onclick="$(this)[0].src='/images/ajax-indicator.gif';var wcall=wicketAjaxGet('wicket/page?1-1.IBehaviorListener.0-dashboardBody-columns-0-gadgets-1-body-content-treeTable-form-rows-4-expandLink',function() { }.bind(this),function() { }.bind(this), function() {return Wicket.$('id53') != null;}.bind(this));;return !wcall;">

Код:

link_xpath = "//a[contains(text(),'git')]//parent::*/img"
driver.find_element_by_xpath(link_xpath).click()

1 Ответ

0 голосов
/ 26 февраля 2019

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

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

    element = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "img.pointer[src='/images/tree/elbow-minus.gif']"))).click()
    
  • Использование XPATH:

    element = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//img[@class='pointer' and @src='/images/tree/elbow-minus.gif']"))).click()
    
  • Примечание :Вы должны добавить следующий импорт:

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