Нажмите на последнюю строку таблицы HTML с селеном

Я пытаюсь щелкнуть последнюю строку таблицы, используя python и селен. Я выделил то, что я пытаюсь щелкнуть в изображении HTML-кода.

lastRow =  driver.find_element(By.CSS_SELECTOR("td.phone-leftinline yui-dt6-col-Type yui-dt-col-Type yui-dt-first:last-of-type"))
lastRow.click()

Эти коды продолжают выдавать ошибку:

Traceback (most recent call last):
  File "/Users/daniel/Python/main.py", line 42, in <module>
    lastRow =  driver.find_element(By.CSS_SELECTOR("td.phone-leftinline yui-dt6-col-Type yui-dt-col-Type yui-dt-first:last-of-type"))
TypeError: 'str' object is not callable

Я также пробовал это без везения:

lastRow =  driver.find_element(By.XPATH("(//table[1]/tbody/tr)[last()]"));

А как же lastRow = driver.find_element(By.XPATH("(//table[1]//tr)[last()]"));. А если подождать пару секунд перед взаимодействием с элементом? Возможно, он не загрузился, когда вы пытаетесь с ним взаимодействовать.

Jaky Ruby 06.12.2022 11:55
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
1
96
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

driver.find_element(By.CSS_SELECTOR, "td.phone-leftinline.yui-dt6-col-Type.yui-dt-col-Type.yui-dt-first:last-of-type").click()

или

driver.find_element(By.XPATH, "(//table[1]/tbody/tr)[last()]").click()

Кроме того, вам может потребоваться дождаться кликабельности элемента. WebDriverWaitexpected_conditions для этого обычно используется явное ожидание element_to_be_clickable.
UPD
В дополнение к last() XPath поддерживает индексирование элементов, так что вы можете выбрать первый, второй, n-й элемент, как показано ниже:
Это выберет первый элемент

driver.find_element(By.XPATH, "(//table[1]/tbody/tr)[1]").click()

Это выберет второй

driver.find_element(By.XPATH, "(//table[1]/tbody/tr)[2]").click()

и т.д.
Обратите внимание: в XPath индексация начинается с 1, а не с 0, как в большинстве других мест.

Ваш код сработал. Как мне выбрать первую строку с помощью XPATH?

Daniel 06.12.2022 21:31

Ну, это новый вопрос, но я добавил ответ здесь.

Prophet 06.12.2022 22:35

Другие вопросы по теме