繁体   English   中英

如何检查按钮是否在java,selenium webdriver.ps中可点击:检查是否可点击不要等到它可点击

[英]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>

使用此信息,我们可以拉出所有尺寸并删除不可用的尺寸。 这将为我们提供两个列表,一个列表仅包含可用的大小,而另一个列表则包含不可用的大小。 这些元素包含指示尺寸的文本。

使用所有这些信息,下面的代码将所有元素拉出,将它们分为可用元素与不可用元素,然后从每个元素中拉出大小信息并将它们存储在两个列表中, availableSizesunavailableSizes 从那里您可以打印列表或验证某些尺寸是否可用等。

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM