我目前正在编写一个测试脚本,在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
谁能看到我哪里出错?
答案 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)
中,它只会在找到元素时执行。