[英]how to check if a button is clickable in java,selenium webdriver.ps:check if clickable not wait untill it is clickable
嘿,我正在用硒编写一个测试用例,该测试基于一个购物网站( http://www.beechtree.pk/ ),而我要检查的内容是是否可以选择该产品的尺寸或不。 无法使用的尺寸已在网站上显示出来,因此我了解它们不再可单击。 我尝试使用isEnabled和isDisplayed条件来检查其clickab; e,但它们不起作用。
ps:我想检查它的clickable(大小是否可用),如果不是,我的程序可以选择另一种大小来继续执行该程序(它目前是随机选择的),所以我不想等待它成为可点击的
如我所见,您可以尝试获取class属性,并检查它是否包含DisabledSwatch。
如果您只需要检查可用的大小,那为什么不使用css选择器,如:
span[class='swatch']
您可以使用此选择器搜索元素,然后从中单击随机。
Xpath替代:
//*[@class='swatch']
要么
//*[@class='swatch']/..
isEnabled和isDisplayed应该适合您。 您可以检查是否正确选择了元素。 您可以打印按钮的文本吗? 虚拟代码:
public class Test{
public static void main(String[] args) {
// TODO Auto-generated method stub
System.setProperty("webdriver.chrome.driver", "C:\\Selenuim\\chromedriver2.3.exe");
WebDriver driver = new ChromeDriver();
try{
driver.get("http://register.rediff.com/register/register.php");
Thread.sleep(2000);
WebElement e = driver.findElement(By.name("btnemail"));
boolean actualValue = e.isEnabled();
if (actualValue)
System.out.println("Button is enabled");
else
System.out.println("Button is disabled");
Thread.sleep(2000);
}
catch(Exception ex){
System.out.println("Exception " + ex.getMessage());
}
finally{
driver.close();
driver.quit();
}
}
}
获取所有可点击元素:
List<WebElement> elms = driver.findElements(By.cssSelector("span.swatch:not(.disabledSwatch)"))
要获取所有不可点击的元素:
List<WebElement> elms = driver.findElements(By.cssSelector("span.swatch.disabledSwatch"))
要获取随机元素并通过测试光标来检查其是否可点击:
List<WebElement> elms = driver.findElements(By.cssSelector("span.swatch"));
boolean disabled = elms.get(i).getCssValue("cursor") != "pointer";
要获取随机元素并通过测试该类来检查其是否可点击:
List<WebElement> elms = driver.findElements(By.cssSelector("span.swatch"));
boolean disabled = elms.get(i).getAttribute("class").contains("disabledSwatch");
我建议不要检查随机大小以查看它们是否可用,而应检查所有大小以查看它们是否可用。
在网站上,大小位于SPAN
元素中。 此大小不可用,请注意元素上的disabledSwatch
类。
<span id="swatch11" class="swatch disabledSwatch" onclick="colorSelected('attribute133','11','','8')">8</span>
^^^^^^^^^^^^^^
此大小可用,不存在disabledSwatch
类。
<span id="swatch14" class="swatch" onclick="colorSelected('attribute133','14','','10')">10</span>
使用此信息,我们可以拉出所有尺寸并删除不可用的尺寸。 这将为我们提供两个列表,一个列表仅包含可用的大小,而另一个列表则包含不可用的大小。 这些元素包含指示尺寸的文本。
使用所有这些信息,下面的代码将所有元素拉出,将它们分为可用元素与不可用元素,然后从每个元素中拉出大小信息并将它们存储在两个列表中, availableSizes
和unavailableSizes
。 从那里您可以打印列表或验证某些尺寸是否可用等。
List<WebElement> unavailableElements = driver.findElements(By.cssSelector("div.swatchesContainer span.swatch.disabledSwatch"));
List<WebElement> availableElements = driver.findElements(By.cssSelector("div.swatchesContainer span.swatch"));
availableElements.removeAll(unavailableElements);
List<String> unavailableSizes = new ArrayList<String>();
List<String> availableSizes = new ArrayList<String>();
for (WebElement e : unavailableElements)
{
unavailableSizes.add(e.getText());
}
for (WebElement e : availableElements)
{
availableSizes.add(e.getText());
}
这样的东西行不行?
List<WebElement> sizes = new ArrayList<WebElement>();
for(WebElement size : sizes) {
if(size.isDisplayed() && size.isEnabled()) {
size.click();
break;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.