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

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

<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>

person ChanGan    schedule 15.01.2012    source источник
comment
Что ты используешь? Selenium RC или WebDriver (Selenium 2)? Какой язык вы используете? Джава? С #? Python? или что?   -  person Ripon Al Wasim    schedule 16.01.2013


Ответы (6)


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

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

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

person faramka    schedule 16.01.2012

Используйте селектор xpath (вот быстрый tutorial) вместо 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()

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

NEXT_BUTTON_XPATH = '//input[@type="submit" and @title="next"]'
selenium.click(NEXT_BUTTON_XPATH)
person Misha Akovantsev    schedule 16.01.2012

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

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

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

person user1710861    schedule 16.02.2014

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

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

cssPath для кнопки "Далее": input [value = Next]

person Ripon Al Wasim    schedule 16.01.2013

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

person faramka    schedule 16.01.2012
comment
Но после прочтения вы должны знать, что делать, если у элемента нет атрибута id. - person faramka; 16.01.2012

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

person Rohit Ware    schedule 16.01.2012