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

У меня есть 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 ответов


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

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

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


использовать 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()

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

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

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

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

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


для следующей кнопки вы можете использовать xpath или cssSelector, как показано ниже:

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

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


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


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


    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