Как нажать / нажать кнопку с помощью Selenium, если у кнопки нет идентификатора? - PullRequest
26 голосов
/ 15 января 2012

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

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

Ответы [ 7 ]

18 голосов
/ 16 января 2012

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

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

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

18 голосов
/ 16 января 2012

Используйте 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селектор вместо идентификатора кнопки:

NEXT_BUTTON_XPATH = '//input[@type="submit" and @title="next"]'
selenium.click(NEXT_BUTTON_XPATH)
4 голосов
/ 16 февраля 2014

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

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

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

2 голосов
/ 16 января 2013

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

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

cssPath для кнопки «Далее»: введите [значение = Далее]

1 голос
/ 16 января 2012

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

0 голосов
/ 01 июня 2018
    You can achieve this by using cssSelector 
    // Use of List web elements:
    String cssSelectorOfLoginButton="input[type='button'][id='login']"; 
    //****Add cssSelector of your 1st webelement
    //List<WebElement> button 
    =driver.findElements(By.cssSelector(cssSelectorOfLoginButton));
    button.get(0).click();

    I hope this work for you
0 голосов
/ 16 января 2012

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

...