基于按钮的决策

时间:2014-04-18 18:27:58

标签: selenium selenium-webdriver

我正在尝试根据页面中显示的按钮做出决定。将显示“保存”按钮或同时显示“保存并添加另一个”和“保存”按钮。

如果它只是保存按钮,则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”。

有没有办法快速做出这个决定?

2 个答案:

答案 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')]"))