我有以下问题:
我在表单内有一个按钮(网页上有一个登录名和密码文本框和一个按钮),此按钮调用js函数,并在登录名和密码验证后调用主网页。 html代码是这样的(此代码在一个名为“ login”且方法= POST的表单中):
<INPUT class="btn btn-mini btn-primary" onclick=submitForm(); type=button value="Sign On">
在Selenium中,我尝试使用以下语句,但未成功:
driver.findElement(By.xpath("//input[@type='button']")).click();
driver.findElement(By.cssSelector("input[type='button'][@value='Sign On']")).click();
driver.findElement(By.xpath("//input[@value='Sign On']")).click();
当我运行脚本时,登录名和密码文本正确填写,但是单击按钮无效。
您能帮我吗?
谢谢!
来自智利的贡萨洛
要单击该元素,您需要为element_to_be_clickable()
引入WebDriverWait,并且可以使用以下任一[
cssSelector
:new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("input.btn.btn-mini.btn-primary[value='Sign On'][onclick^='submitForm']"))).click();
xpath
:new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@class='btn btn-mini btn-primary' and @value='Sign On'][starts-with(@onclick, 'submitForm')]"))).click();
使用的代码是:
WebElement button = null;
List<WebElement> inputs = webDriver.findElements(By.tagName("input"));
for (WebElement input : inputs) {
if (input.getAttribute("value").equals("Log In")) {
button = input;
break;
}
}
if (button == null) {
System.err.println("Cannot find button!");
} else {
System.out.println("Clicking button now!");
button.click();
}
此后,我检查另一个更有效的代码:
driver.findElement(By.cssSelector("input[type='button'][value='Sign On']")).click();
这也可以。感谢大家的帮助