以下是按钮的HTML代码:
<span>
<button class="buttonLargeAlt" onclick="javascript:submitCheckout(this.form);"type="submit">Checkout</button>
</span>
我尝试了driver.findElement(By.xpath("//span[contains(.,'Checkout')]")).click();
它不起作用......
还有其他想法吗?页面上有两个名称相同的按钮。
答案 0 :(得分:2)
driver.submit()
应该有效。 如果DOM中按钮的顺序始终相同,那么这也应该起作用:
driver.findElements(By.className("buttonLargeAlt")).get(0).click();
如果它是页面上的第一个buttonLargeAlt按钮。
答案 1 :(得分:2)
尝试:
//span/button[text()='Checkout' and @class='buttonLargeAlt']
或
//span/button[text()='Checkout'][1]
另外,如果您知道需要点击哪两个按钮,可以尝试:
//span/button[text()='Checkout'][1]
[1]
是找到文字为'Checkout'
答案 2 :(得分:1)
以下情况应该有效:
driver.findElement(By.className("buttonLargeAlt")).click();
driver.findElement(By.xpath("//button[contains(@class='buttonLargeAlt')]")).click();
driver.findElement(By.xpath("//button[@class='buttonLargeAlt']")).click();
答案 3 :(得分:1)
You can achieve this by using XPath with html input element id or by name
//1. By XPath indexing option:
WebElement loginButtonId =
driver.findElement(By.xpath("//*[@id='login']"));
//Xpath of login button i have get For firefox browser
loginButtonId.click();
I hope this work for you
答案 4 :(得分:0)
我有添加附件按钮:
我尝试过以下代码:
driver.findElement(By.xpath("//*[@id=\"attachments\"]/div/div/img")).sendKeys("C:\\Users\\NayazPasha\\Desktop\\Ndin selenium Testing outputs\\Collab Schedule onclick.png");
答案 5 :(得分:-1)
XPath只会获得跨度,而不是物理按钮。
在这里完美无缺:
//span[contains(.,'Checkout')]/button
或By.CssSelector:
button.buttonLargeAlt
如果仍然不能正常工作,请解释更多。它在iFrame中吗? Selenium给出了什么错误?