如何检查java中的按钮是否可点击,selenium webdriver.ps:check如果可点击而不等待,直到它是可点击的

时间:2016-08-09 10:02:11

标签: java eclipse selenium testing webdriver

enter image description here嘿我正在用selenium编写一个测试用例,测试基于一个购物网站(http://www.beechtree.pk/),我想在我的测试中检查的是产品的大小是否选择可用与否。网站上提供了不可用的尺寸,因此我知道它们不再可点击。我已经尝试使用isEnabled和isDisplayed条件来检查它的clickab; e但它们不起作用。

ps:我想检查它的可点击性(大小是否可用),这样如果不是,我的程序可以选择另一个大小继续进行程序(它当前是随机选择)所以我不想等待它变得可点击。

5 个答案:

答案 0 :(得分:0)

正如我所见,您可以尝试获取class属性并检查它是否包含disabledSwatch。

如果您只需检查可用的尺寸,那么为什么不使用css选择器,如:

span[class='swatch']

您可以使用此选择器搜索元素并从中随机点击。

Xpath替代方案:

//*[@class='swatch']

//*[@class='swatch']/..

答案 1 :(得分:0)

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();
              }
       }

}

答案 2 :(得分:0)

获取所有可点击元素:

def task1():
    properties = {'status': 'original'}
    return properties

def task2():
    properties = task1()
    properties['status'] = 'updated'
    return properties

获取所有不可点击的元素:

 location / {
        # for every query string parameter nginx provides a variable
        # $arg_<name>
        if ($arg_lang != ''){
          set $old_lang $arg_lang;
          set $args lang='';
          set $arg_lang '';
          # questionmark after $uri drops all query params
          rewrite ^ /$old_lang$uri? redirect; # or permanent
        }
    }

获取随机元素并通过测试光标检查它是否可点击:

List<WebElement> elms = driver.findElements(By.cssSelector("span.swatch:not(.disabledSwatch)"))

获取随机元素并通过测试类检查它是否可点击:

List<WebElement> elms = driver.findElements(By.cssSelector("span.swatch.disabledSwatch"))

答案 3 :(得分:0)

我建议您不要检查随机大小以查看它们是否可用,而是检查所有大小以查看它们是否可用。

从网站中,大小位于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和{{1}中}。从那里,您可以打印列表或验证某些尺寸是否可用等等。

unavailableSizes

答案 4 :(得分:0)

不会有这样的工作吗?

        List<WebElement> sizes = new ArrayList<WebElement>();
        for(WebElement size : sizes) {
            if(size.isDisplayed() && size.isEnabled()) {
                size.click();
                break;
            }
         }