Selenium - 将元素的存在设置为布尔值,然后执行'if'和'else'代码

时间:2014-08-13 11:16:12

标签: java selenium

我目前正在编写一个测试脚本,在selenium上的java中,它正在查看网页上的元素,如果存在则将它们写入文本文件。

我遇到的问题是该元素可能在页面上,也可能不在页面上,具体取决于其他变量。

我正在尝试获取代码来设置元素是否作为布尔值存在,如果存在则完成执行'if block',如果元素不存在,我希望它转到'else'并继续脚本。

这是我当前的努力,但是在执行期间(当元素不存在时)脚本以异常结束,在if块中(因为元素不存在),当我不希望它进入第一名。

// First check if the element exists (attempting to make boolean)
boolean isPresent; Login.driver.findElements
(By.xpath("html/body/div[4]/div[1]/table[1]/tbody/tr[3]/td[2]"));

// If true write values to .txt file, else continue with script           
        if (true){

        writer.write(Login.driver.findElement
                (By.xpath("html/body/div[4]/div[1]/table[1]/tbody/tr[1]/td[2]/a"))
                .getText() + " : " + Login.driver.findElement
                (By.xpath("html/body/div[4]/div[1]/table[1]/tbody/tr[3]/td[2]"))
                .getText());
        writer.write(lineSeparator);}
        else 

谁能看到我哪里出错?

1 个答案:

答案 0 :(得分:2)

首先,我假设您使用的是Selenium WebDriver,而不是Selenium RC。

如果元素存在,您需要将boolean指定为true。 假设:

Login.driver.findElements(
   By.xpath("html/body/div[4]/div[1]/table[1]/tbody/tr[3]/td[2]"));

可以找到元素(我个人不建议遍历DOM树),然后你只需要检查它是否存在并将其报告给isPresent布尔值。

由于findElements返回List,您需要检查其大小是否大于0.

然后将结果分配给布尔值,如下所示:

boolean isPresent = (Login.driver.findElements(
    By.xpath("html/body/div[4]/div[1]/table[1]/tbody/tr[3]/td[2]")).size() > 0);

然后将布尔值放在if条件if(isPresent)中,它只会在找到元素时执行。