2012-01-15 6 views
24

У меня есть 2 кнопки Отмена и Следующая кнопка на одной странице, но она имеет только один идентификатор (см. Ниже код). Я хотел нажать «Далее», но каждый раз, когда он идентифицирует кнопку «Отмена», не только кнопку «Далее». Как решить эту проблему?Как нажимать/нажимать кнопку, используя 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> 
+2

Что вы используете? Selenium RC или WebDriver (Selenium 2)? На каком языке вы используете? Ява? C#? Python? или что? –

ответ

15

В Selenium IDE вы можете сделать:

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

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

+0

Отлично ... он работает .. :) – ChanGan

18

Используйте 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() 

Или, если вы используете "ванильный" Селен, просто использовать тот же селектор XPATH вместо кнопки ID:

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

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

+0

Эта ссылка не решила мою проблему. – ChanGan

+0

Но после прочтения вы должны знать, что делать, когда элемент не имеет атрибута «id». – faramka

0

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

+0

если я использую этот xpath, всегда нажимаю отменить вместо следующего. – ChanGan

+0

Какой xPath вы использовали, и это не сработало? – faramka

2

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

для XPath Следующей кнопки: // ввод [@ значения = 'Далее']

cssPath для кнопки Далее: входной [значение = Next ]

3

использовать текст и значение атрибутов вместо идентификатора

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

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

Смежные вопросы