Как щелкнуть по событию onclick в таблице через Selenium и Python - PullRequest
0 голосов
/ 14 января 2019

Я автоматизирую функцию, когда пользователю нужно щелкнуть ссылку, выделенную в ссылке ниже.

HTML

Я пробовал содержимое для xpath, которое является //*[@id="lc"], и параметр onclick из Здесь , ни то, ни другое не работает, и ошибка с элементом не существует, ошибка.

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

Ответы [ 3 ]

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

Я сделал это в Java, надеюсь, вы найдете ответ да в статических или в динамических таблицах идентификатор будет таким же, но если вы попытаетесь использовать абсолютный xpath это два абсолютных пути элемента таблицы, находящиеся друг в друге в первой строке

/html[1]/body[1]/section[1]/section[1]/div[1]/data[1]/div[1]/div[4]/div[1]/div[1]/div[1]/div[1]/div[2]/div[2]/div[1]/div[1]/div[1]/div[1]

/html[1]/body[1]/section[1]/section[1]/div[1]/data[1]/div[1]/div[4]/div[1]/div[1]/div[1]/div[1]/div[2]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]

Это относительный xpath тех же элементов

//a[contains(text(),'AF17OT41603')]

//div[@id='1547533504703-0-uiGrid-000C-cell']//div[@class='ui-grid-cell-contents ng-binding ng-scope'][contains(text(),'AKSHAY PATIL')]

Таблица

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

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

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

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "td.EMROtherEpsEven>table tr>td.EMROtherEpsEven#lc[onclick*='Hemoglobin']"))).click()
    
  • Использование XPATH:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//td[@class='EMROtherEpsEven']/table//tr/td[@class='EMROtherEpsEven' and @id='lc'][contains(@onclick, 'Hemoglobin')]"))).click()
    
  • Примечание : Вы должны добавить следующий импорт:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
0 голосов
/ 14 января 2019

Я не использую Selenium с Python, но я использую с Java, и в Java вы должны использовать простую кавычку (') вместо двойной кавычки ("), или вы можете просто использовать простой локатор id = lc без кавычек , если вы уверены, что идентификатор правильный, это должно сработать.

...