当前位置: 首页 > 面试题库 >

Selenium Webdriver-在If语句中使用isDisplayed()不起作用

孟彦
2023-03-14
问题内容

我正在创建一个脚本,其中涉及搜索记录,然后更新记录。在搜索屏幕上,用户可以选择查看高级搜索选项。切换显示或隐藏高级搜索是由一个按钮控制的。

<a title="Searches" href="javascript:expandFilters()"><img border="0" align="absmiddle" alt="Advanced" src="****MASKED URL****"></a>

显示或隐藏高级搜索时,搜索按钮的属性之间唯一的区别是img src:

隐藏高级搜索后,IMG src以“ /Styles/_Images/advanced_button.jpg”结尾;当可见高级搜索时,IMG src以“
/Styles/_Images/basic_button.png”结尾

当我打开页面时,有时会显示“高级”搜索选项,有时却没有。我要搜索的值显示在“高级”部分中,因此为了使脚本正常工作,我添加了IF语句。

<input type="text" value="" maxlength="30" size="30" name="guiSystemID">

IF语句查找需要在其中输入数据的字段,如果该字段不存在,则表明“高级”选项不可见,我需要单击按钮以展开搜索选项。

我创建了以下IF语句。

     if (!driver.findElement(By.name("guiSystemID")).isDisplayed()) {
         driver.findElement(By.cssSelector("img[alt="Advanced"]")).click();
     }

当我运行脚本并展开“高级”搜索时,脚本将成功运行。但是,当我运行脚本并且未展开“高级”搜索时,脚本失败,建议我找不到对象“
guiSystemID”。令人沮丧的是,如果找不到它,那么我希望脚本继续执行,进入IF语句的True路径。

有没有人对我能如何评估该字段是否出现而不使脚本失败(因为找不到该字段)提出了任何建议。

提前致谢

西蒙


问题答案:

我回答这个问题可能很晚,但是可能会帮助其他人寻找相同的东西。

我最近在使用isDisplayed()时遇到了类似的问题。我的代码是这样的

if(driver.findElement(By.xpath(noRecordId)).isDisplayed() )                                                                                                         
{         
  /**Do this*/     
}    
else    
{     
  /**Do this*/    
}

当存在isDisplayed试图查找的元素时,此代码可以很好地工作。但是当元素不存在时,它将继续寻找该元素,并因此引发异常“
NosuchElementFound”。因此,我无法测试其他部分。

我想出了一种处理此问题的方法(将{if,else}与try and catch块一起使用,这样说。

public void deleteSubVar() throws Exception  
{         
  try   
  {    
    if(driver.findElement(By.xpath(noRecordId)).isDisplayed() )     
    {      
      /**when the element is found do this*/     
    }    
  }      
  catch(Exception e)     
  {       
   /**include the else part here*/     
  }       
}

希望这可以帮助 :)



 类似资料:
  • 我正在创建一个涉及搜索记录然后更新记录的脚本。在搜索屏幕上,用户可以选择查看高级搜索选项。切换显示或隐藏高级搜索由一个按钮控制。 搜索按钮在显示或隐藏高级搜索时的属性之间的唯一区别是img src: 隐藏高级搜索时,IMG src以“/Styles/\u Images/advanced\u button.jpg”结尾,当高级搜索可见时,IMG src以“/Styles/\u Images/basi

  • 问题内容: 这个问题已经在这里有了答案 : 从列表中删除项目并对其进行迭代时出现奇怪的结果 (4个答案) 5年前关闭。 对于我的一生,我无法弄清楚为什么我的IF语句没有受到攻击。在很多情况下,n的余数//放在结果列表中的最后一个数字为0。 问题答案: 问题是您要在迭代列表时修改列表,因此所有偶数都将被跳过。因此,条件总是。 该循环跟踪指数的,所以当你在索引中删除的项目在,下一个项目个位置转变为当前

  • 行动时刻 - 在unlang中使用if语句 if语句本身并不复杂。 它具有以下格式: if(condition){ ... } 由于其许多可能性,条件部分可能变得复杂。 使用if语句获取返回码 我们现在将查看模块的返回代码,并使用此代码与指定的条件进行比较。 FreeRADIUS中的每个模块都需要在调用时返回代码。 随后可以将此代码的值用作if语句中的条件检查。 使用if语句授权用户 如

  • 问题内容: 我是一个新手,Python和目前正在学习像控制流的命令,等 该语句工作正常,但是当我编写或命令时,解释器给我一个语法错误。我使用的是Python 3.2.1,问题出在其本机解释器和IDLE中。 我遵循的是 《 Python的字节》一 书中给出的内容。如您所见,并且给出了 Invalid Syntax 。 为什么会这样呢?我在IDLE和交互式python中都遇到了问题。我希望语法正确。

  • 问题内容: 我是Java的新手,正在尝试学习速记语句的概念。 我想出了下面的代码。但是,该代码将无法编译,并在(即?:)语句旁边显示错误。 有人可以告诉我为什么它不起作用吗? 对不起,如果我的问题对某些人听起来很愚蠢。我是Java新手。 在此先感谢您的帮助! 问题答案: 三元表达 是一个 表达式 ,而不是一个语句,因此不能在需要语句的地方使用。 您可以这样写: 因为这是一个声明。

  • 问题内容: 在C语言中,我可以编写一个if语句 但是,当我尝试在Java中执行相同操作时,编译器会告诉我“不兼容的类型”,并说我需要一个而不是一个。有什么方法可以用Java编写C代码吗? 问题答案: 以下任何一项都可以为您工作: