web-dev-qa-db-ja.com

ボタンにIDがない場合、Seleniumを使用してボタンを押す/クリックする方法は?

同じページに[キャンセル]と[次へ]の2つのボタンがありますが、IDは1つだけです(以下のコードを参照)。 [次へ]を押したかったのですが、[次へ]ボタンではなく[キャンセル]ボタンを識別するたびに。この問題を解決するには?

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

Selenium IDEでは次のことができます:

コマンド| clickAndWait 
ターゲット| // input [@ value = 'Next' and @ title = 'next'] 

正常に動作するはずです。

19
faramka

Idの代わりに xpath セレクター(ここでは簡単に tutorial )を使用します。

#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を使用する場合は、ボタンIDの代わりに同じxpathセレクターを使用します。

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

idの代わりにtext属性とvalue属性を使用します

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

次も同様です。

4
user1710861

[次へ]ボタンには、次のようにxpathまたはcssSelectorを使用できます。

[次へ]ボタンのxpath:// input [@ value = 'Next']

[次へ]ボタンのcssPath:input [value = Next]

2
Ripon Al Wasim

要素ロケーターとして識別子のみを使用する必要はありません。いくつかの方法を使用して要素を見つけることができます。 この記事 を読んで、最適なものを選択してください。

1
faramka

その要素を識別するためにxpathを使用できます。

0
Rohit Ware
    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
mkumar0304