30

我在同一页面上有 2 个按钮 Cancel 和 Next 按钮,但它只有一个 id(参见下面的代码)。我想按 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>
4

7 回答 7

23

使用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()

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

NEXT_BUTTON_XPATH = '//input[@type="submit" and @title="next"]'
selenium.click(NEXT_BUTTON_XPATH)
于 2012-01-16T07:38:07.010 回答
20

在 Selenium IDE 中,您可以执行以下操作:

命令 | 点击并等待
目标 | //输入[@value='下一个'和@title='下一个']

它应该可以正常工作。

于 2012-01-16T13:15:41.603 回答
5

使用 text 和 value 属性而不是 id

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

Next 类似。

于 2014-02-16T05:44:30.753 回答
2

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

下一个按钮的 xpath://input[@value='Next']

下一个按钮的 cssPath:input[value=Next]

于 2013-01-16T04:52:52.003 回答
1

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

于 2012-01-16T08:14:53.900 回答
0

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

于 2012-01-16T11:33:15.707 回答
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
于 2018-06-01T12:54:18.887 回答