Подтвердить что ты не робот

Как нажимать/нажимать кнопку, используя Selenium, если кнопка не имеет идентификатора?

У меня есть две кнопки "Отмена" и "Далее" на одной странице, но она имеет только один идентификатор (см. ниже код). Я хотел нажать "Далее" , но каждый раз, когда он идентифицирует кнопку "Отмена", не только кнопку "Далее" . Как решить эту проблему?

<td align="center">
     <input type="button" id="cancelButton" value="Cancel" title="cancel" class="Submit_Button" style="background-color: rgb(0, 0, 160);">
     <input type="submit" value="Next" title="next" class="Submit_Button">
</td>
4b9b3361

Ответ 1

В Selenium IDE вы можете:

Command   |   clickAndWait
Target    |   //input[@value='Next' and @title='next']

Он должен работать нормально.

Ответ 2

Используйте xpath селектор (здесь быстрый учебник) вместо id:

#python:
from selenium.webdriver import Firefox

YOUR_PAGE_URL = 'http://mypage.com/'
NEXT_BUTTON_XPATH = '//input[@type="submit" and @title="next"]'

browser = Firefox()
browser.get(YOUR_PAGE_URL)

button = browser.find_element_by_xpath(NEXT_BUTTON_XPATH)
button.click()

Или, если вы используете "vanilla" Selenium, просто используйте один и тот же переключатель xpath вместо кнопки id:

NEXT_BUTTON_XPATH = '//input[@type="submit" and @title="next"]'
selenium.click(NEXT_BUTTON_XPATH)

Ответ 3

Для кнопки "Далее" вы можете использовать xpath или cssSelector, как показано ниже:

xpath для кнопки Next://input [@value = 'Next']

cssPath для следующей кнопки: input [value = Далее]

Ответ 4

используйте атрибуты text и value вместо id

driver.findElementByXpath("//input[@value='cancel'][@title='cancel']").click();

аналогично для Next.

Ответ 5

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

Ответ 6

Вы можете использовать xpath для идентификации этого элемента.