2012-08-29 66 views
2

以下是按鈕的HTML代碼:如何使用Selenium WebDriver與Java單擊按鈕?

<span> 
<button class="buttonLargeAlt" onclick="javascript:submitCheckout(this.form);"type="submit">Checkout</button> 
</span> 

我試圖driver.findElement(By.xpath("//span[contains(.,'Checkout')]")).click();

這是不工作...

任何其他的想法?在頁面上有兩個同名的按鈕。

回答

2

嘗試:

//span/button[text()='Checkout' and @class='buttonLargeAlt'] 

//span/button[text()='Checkout'][1] 

另外,如果你知道你需要單擊2個按鈕,你可以嘗試:

//span/button[text()='Checkout'][1] 

哪裏[1]是找到第一個帶有文字的按鈕'Checkout'

+0

//button[contains(.,'Checkout')] - 這對我有用..謝謝.. – Mike

0

XPath只會獲得跨度,這不會是物理按鈕。

工作完全正常的位置:

//span[contains(.,'Checkout')]/button 

或By.CssSelector:

button.buttonLargeAlt 

如果仍然沒有工作,更多地解釋。它是否在iFrame中? Selenium會給出什麼錯誤?

+1

//button[contains(.,'Checkout')] - 這對我有用..謝謝.. – Mike

+0

或者那一個是的:)正如你所看到的,很多很多的方式來找到元素。 – Arran

1

的以下應該工作:

driver.findElement(By.className("buttonLargeAlt")).click(); 
driver.findElement(By.xpath("//button[contains(@class='buttonLargeAlt')]")).click(); 
driver.findElement(By.xpath("//button[@class='buttonLargeAlt']")).click(); 
2
driver.submit() 

應該工作。 如果在你的DOM的按鈕的順序總是相同的,這應該工作太:

driver.findElements(By.className("buttonLargeAlt")).get(0).click(); 

,如果它是你的頁面上的第一buttonLargeAlt按鈕。

相關問題