Не удается найти элемент с помощью Selenium

1

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

<td class="read" colspan="4">
    <a href="#" id="button-read" onclick="formRead(); return false;" title="Read record from database" tabindex="1" class="button button-read">Read</a>
    <a id="button-new" title="Read new record from database" class="button button-new">New</a>
</td>

Я пробовал использовать:

new_button = driver.find_element_by_id("button-new")
new_button = driver.find_element_by_css_selector("A.button.button-new")
new_button = driver.find_element_by_xpath('//*[@id="button-new"]')

с последующим

new_button.click()

Но я получаю исключение NoSuchElementException и не могу его найти.

У меня не было этой проблемы с любыми другими элементами, и я не уверен, где я ошибаюсь.

EDIT с решением:

Я понял, что мне нужно переключить iframe

driver.switch_to.frame(driver.find_element_by_id("nested1"))
Теги:
selenium
button
selenium-chromedriver

2 ответа

0

Чтобы убедиться, что элемент находится, попробуйте это:

new_button_list = driver.find_elements_by_xpath('//a[@id="button-new"]')

это вернет список из-за использования "элементов":

затем проверьте длину списка, одна хорошая вещь - это не исключение, а также сообщите, находится ли элемент.

  • 0
    Он не находит его вообще (используя этот способ, длина списка = 0), и без него я не могу перейти к следующим шагам моего автоматического тестирования
  • 0
    хм, этот веб-контент доступен удаленно, так что я могу попробовать
Показать ещё 1 комментарий
0

попробуйте использовать его с утверждением if, может быть, они ставят специальную пустую кнопку, чтобы запутать нас,

new_button = driver.find_element_by_id("button-new")
if new_button:
    new_button.click()

можете ли вы проверить с find_elements_by_id сколько btn есть?

btns = driver.find_elements_by_id("button-new")
print(btns)

# also we can check with # find_elements_by_id

btns = driver.find_elements_by_id("button-new")
if len(btns):
    new_button[0].click()
  • 0
    Это означает, что оператор if не выполняется, так как отсутствует new_button. Я также пытался получить их в виде списка, и его длина равна 0, так как ничего не найдено.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню