我正在尝试根据页面中显示的按钮做出决定。将显示“保存”按钮或同时显示“保存并添加另一个”和“保存”按钮。
如果它只是保存按钮,则xpath为"//input[@value='Save']"
如果同时显示两个按钮,则“保存并添加另一个”的xapth为"//input[@value='Save & Add Another']"
xpath "Save " is "//input[@value='Save']"
我的条件是
if(driver.findElements(By.xpath("//input[@value='Save & Add Another']")).size() == 0){
}else{
}
注意:按钮没有id 上述实现工作正常,但需要花一点时间来评估“if condition”。
有没有办法快速做出这个决定?
答案 0 :(得分:0)
XPath通常很慢,如果你在IE上,它会变得很慢。
使用CSS选择器尝试使用该条件。
if(driver.findElements(By.cssSelector("input[value='Save & Add Another']")).size() == 0){
}else{
}
或者,如果您想同时检查“保存”和“保存并添加另一个”,请使用以下内容:
if(driver.findElements(By.cssSelector("input[value*='Save']")).size() == 0){
}else{
}
答案 1 :(得分:0)
好像你已在某处定义了implicit wait:
隐式等待是告诉WebDriver在尝试查找一个或多个元素时,如果它们不能立即可用,则会在一定时间内轮询DOM。
因此,您要么配置较短的超时,要么进行一次总是至少返回1个元素的搜索:
driver.findElements(By.xpath("//input[starts-with(@value, 'Save')]"))