似乎if (isset($_SESSION['data'][$id])) {
echo "$id in array";
} else {
echo "$id not in array";
}
方法在我们的框架中不起作用。
如果元素显示在应用程序中,它可以正常工作。如果没有,则抛出.isDisplayed()
。所以,只是想知道是否有任何其他方法来验证元素是否存在并相应地写if-else条件。
答案 0 :(得分:2)
如果元素显示然后执行您的操作,您可以将代码括在Try和catch块中并维护条件。如果元素没有显示,那么它将通过catch块处理的异常。
try
{
if(usersname.isDisplayed())
{
System.out.println("Already Login");
}
}
catch(Exception e)
{
new UserLogin(driver).doLogin(TestDataComman.username, TestDataComman.password);
}
答案 1 :(得分:0)
您可以通过以下代码检查元素是否存在:
driver.findElements( By.id("...") ).size() != 0
答案 2 :(得分:0)
除了使用isDisplayd()方法之外的一种方法是:
计算元素数量并检查它是否大于零
代码段:
boolean isPresent = driver.findElements(By.cssSelector("your selector")).size() > 0;
答案 3 :(得分:0)
您可以创建自己的自定义方法来验证页面上是否存在元素
public boolean IsElementPresent(String locatorKey) {
List<WebElement> e = null;
e = driver.findElements(By.id(locatorKey));
if (e.size() == 0) {
return false;
} else {
return true;
}
}
希望这有帮助
答案 4 :(得分:0)
您可以尝试以下方法来检查元素是否存在:
public boolean isPresent(By locator_of_your_element){
List <WebElement> yourElement = driver.findElements(your locator here);
if (yourElement.size()!=0){
return true;
}
else{
return false;
}
}
答案 5 :(得分:0)
您获得空指针异常的原因是, isDisplayed()方法假定元素已存在,然后检查它是否可见。
这是我检查元素是否存在的方法吗?
public boolean isElementExist(By element, int timeout){
wait = new WebDriverWait(driver, timeout);
try{
return wait.until(ExpectedConditions.presenceOfElementLocated(element));
}catch (TimeoutException te){
return null;
}
}
您可以调用此方法获取元素Object,然后检查它是否显示。或者更好,您可以使用以下代码等待元素可见。
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id(a)));