如果按钮没有Id,如何使用Selenium按下/单击按钮?

时间:2012-01-15 17:18:07

标签: selenium-rc selenium-webdriver selenium-ide buttonclick

我在同一页面上有2个按钮取消和下一个按钮,但它只有一个ID(参见下面的代码)。我想按下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 个答案:

答案 0 :(得分: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()

或者,如果您使用“vanilla”Selenium,只需使用相同的xpath选择器而不是按钮ID:

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

答案 1 :(得分:18)

在Selenium IDE中,你可以这样做:

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

它应该可以正常工作。

答案 2 :(得分:4)

使用text和value属性而不是id

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

同样适用于Next。

答案 3 :(得分:2)

对于Next按钮,您可以使用xpath或cssSelector,如下所示:

下一步按钮的xpath://输入[@ value ='下一步']

下一步按钮的cssPath:输入[value = Next]

答案 4 :(得分:1)

您不需要仅使用标识符作为元素定位器。您可以使用几种方法来查找元素。阅读this article并选择最适合您。

答案 5 :(得分:0)

您可以使用xpath来识别该元素。

答案 6 :(得分:0)

    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