попробуйте / за исключением того, что не перехватывает NoSuchElementException в цикле Xpath, который использует приращение строки - PullRequest
0 голосов
/ 03 июля 2019

Большое спасибо.Я использую формат% для увеличения номера строки внутри цикла for, чтобы щелкнуть () по строкам, чтобы открыть новую вкладку, очистить данные, закрыть новую вкладку и щелкнуть следующую строку.Код работает хорошо, пока не попадет в строку, которая не является кликабельным элементом.Попытка / исключение не вызывает исключение.

Сообщение об ошибке:

selenium.common.exceptions.NoSuchEleme ntException: Message: Unable to locate element: .//table[1]/tbody/tr[3]/td[3]

Я немного растерялся здесь.Я не слишком уверен, как подойти к этому, поскольку цикл проходит через диапазон.

from selenium.common.exceptions import NoSuchElementException

row_start = 2
x = len(driver.find_elements_by_xpath('.//table[1]/tbody/tr'))

    for c in range(row_start, x + 1):
        table_row = driver.find_element_by_xpath('.//table[1]/tbody/tr[%d]/td[3]' % c)
        try:
            table_row.click()
        except NoSuchElementException:
            continue
        table_row.click()

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

1 Ответ

2 голосов
/ 03 июля 2019

Исключение составляет строка над попыткой. попробуйте следующий код.

from selenium.common.exceptions import NoSuchElementException
row_start = 2 x = len(driver.find_elements_by_xpath('.//table[1]/tbody/tr'))
for c in range(row_start, x + 1):
    try:
       table_row = driver.find_element_by_xpath('.//table[1]/tbody/tr[%d]/td[3]' % c)
       table_row.click()
    except NoSuchElementException:
        continue
...