无法通过" isDisplyed"检查WebElement是否存在。在selenium WebDriver上

时间:2014-11-27 14:34:00

标签: java selenium selenium-webdriver

我试图从UI获取值,使用(By.id)locator.getAtrribute(" value"),

问题:

但是,当找不到xpath(UI上没有web元素)时,我需要将值取为' 00:00',但是我得到错误" No这样的元素& #34;

我需要添加一个检查,以便在UI上找到webelement,如果为true,则使用getattribute获取值(" value"),否则返回值为' 00:00&# 39;

但是当使用If条件时,"(WebelementforUIvalue.isEmpty()"返回' 00'虽然Web元素存在于UI上。(我需要取00) :00,当UI上没有找到/存在元素时

String WebelementforUIvalue = driver.findElement(By.id("ctl00_MainContent_AllowanceGridView_SRow"+cellRosterPerioddd+cellRosterPeriodmm+"_"+PayBucket)).getAttribute("value");
if (WebelementforUIvalue.isEmpty()) {
    UIValue = "00.00";  
} else {
    UIValue = WebelementforUIvalue;   
} 
System.out.println(UIValue);

4 个答案:

答案 0 :(得分:2)

就个人而言,我个人会使用try / catch块。

try {
    String WebelementforUIvalue = driver.findElement(By.id("ctl00_MainContent_AllowanceGridView_SRow"+cellRosterPerioddd+cellRosterPeriodmm+"_"+PayBucket)).getAttribute("value");
    UIValue = WebelementforUIvalue;
    } 
    catch (NoSuchElementException) {
        UIValue ="00.00";
    }

答案 1 :(得分:1)

请尝试这样( Java代码)。 :

    try{
       WebElement element = new WebDriverWait(driver,20).until(ExpectedConditions.presenceOfElementLocated(By.id("ctl00_MainContent_AllowanceGridView_SRow"+cellRosterPerioddd+cellRosterPeriodmm+"_"+PayBucket));
       UIValue = element.getAttribute("value");
    }catch(Throwable e){
       UIValue = "00.00";
    }
System.out.println(UIValue);

我已经给出了20秒的显式超时。因此,硒会在20秒内尝试检测元素的存在。如果它没有找到,那么它将超时并发送分配" UIValue"至" 00.00"或者,如果它找到了元素,它将分配"值"属性" UIValue"。

答案 2 :(得分:0)

你可以这样试试......

String WebelementforUIvalue = null;
try{
    WebelementforUIvalue = driver.findElement(By.id("ctl00_MainContent_AllowanceGridView_SRow"+cellRosterPerioddd+cellRosterPeriodmm+"_"+PayBucket)).getAttribute("value");
   } catch(NoSuchElementException nsee) {
           WebelementforUIvalue = "0.0";
   }
System.out.println(WebelementforUIvalue);

答案 3 :(得分:0)

您可以使用“findElements”(最后的观察者')以更好的方式处理此问题。 findElements返回与定位条件匹配的元素列表。

List<WebElements> list=driver.findElements(By.id("Your criteria"))
Integer intNoValues=list.size();
if(intNoValues=0)
{  
  UIValue = "00.00";
}
else
{
 UIValue = WebelementforUIvalue;
}

如果您想详细了解findElements,可以观看以下视频 How to find element which doesnt exist using WebDriver