Найти элемент <td> с помощью Selenium Python

python selenium selenium-webdriver xpath xpath-1.0

43 просмотра

2 ответа

Я новичок в Python, и я пытаюсь написать веб-скрипт. Я пытаюсь дважды щелкнуть по этому элементу (это не кнопка и не ссылка - просто элемент td), и у меня возникают проблемы с его поиском.

Ниже приведен код

<td align="left" valign="middle" class="   "
title="Business Profile (Imported)">Business Profile (Imported)</td>

Когда я выбираю его, класс меняется. Я подозреваю, что это где проблема в

<td align="left" valign="middle" class="  cellselected "
title="Business Profile (Imported)">Business Profile (Imported)</td>

Я использовал css selector & xpath. Ни один не работает. Я попробовал оба:

driver.find_element_by_xpath('//td[@title="Business Profile (Imported)"]').click()
driver.find_element_by_css_selector("td[title='Business Profile (Imported)']")

Это ошибка, которую я получаю:

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//td[@title="Business Profile (Imported)"]"}

Любая помощь будет принята с благодарностью. Спасибо!!

Автор: jayright25 Источник Размещён: 08.08.2019 03:42

Ответы (2)


0 плюса

Для обработки динамического элемента индукции WebDriverWaitи element_to_be_clickableи использовать следующий XPath

WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.XPATH,"//td[@title='Business Profile (Imported)' and text()='Business Profile (Imported)']"))).click()

ИЛИ ЖЕ

WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.XPATH,"//td[@title='Business Profile (Imported)'][contains(.,'Business Profile (Imported)')]"))).click()

Вам нужно импортировать следующее, чтобы выполнить вышеуказанный код.

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
Автор: KunduK Размещён: 03.08.2019 05:07

0 плюса

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

  • XPATH 1:

    element = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//td[contains(@title, 'Imported') and starts-with(., 'Business Profile')]")))
    
  • XPATH 2:

    element = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//td[starts-with(@title, 'Business Profile') and contains(., 'Imported')]")))
    
  • Примечание . Необходимо добавить следующие операции импорта:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
Автор: DebanjanB Размещён: 08.08.2019 12:41
Вопросы из категории :
32x32