当前位置: 首页 > 知识库问答 >
问题:

在Selenium中未显示单选按钮时跳过检查

包子航
2023-03-14

我试图让Selenium Webdriver检查是否显示了单选按钮,如果没有,则跳过该步骤继续。我有多个版本的web应用程序,一个较新版本实现了一个新的单选按钮,该按钮在旧版本中不可用,但我想使用相同的selenium代码测试多个版本的应用程序。我正在使用java代码来编写脚本,这就是我目前所拥有的。。。

我有一个Utilities类,它包括几个其他函数,可在我的其他类中使用,称为AdminUtils。java和我编写了以下代码来查找单选按钮元素,并在找到时单击它:

public static void clickPrivate() {

    WebElement rdBtn_Private = AdminUtils.driver.findElement(By.id("type-radio-private"));
    rdBtn_Private.click();
}

然后我有了我的基本测试类,在那里我调用了这个函数(以及这个步骤之前和之后的其他步骤):

ArchiveUtils.clickPrivate();

这与新版本的web应用程序一样,但在旧版本上会出现错误,因为这些版本中不存在该按钮。我一直在阅读这个网站和其他一些网站,它们对类似的功能有一些建议,但我对Java和Selenium还比较陌生,所以到目前为止,将其转换为我正在尝试的功能是无效的。我试着接球,试着接球。IsDisplayed调用,但我不确定哪个类需要它们,并且在尝试执行测试时,它在我的基本测试类的更深处导致了NullPointerException。如有任何帮助,我们将不胜感激。提前感谢!

共有2个答案

微生毅
2023-03-14

您可以使用一秒钟的短显式等待来检查元素是否存在。如果它确实单击它,如果它没有捕获异常并继续测试。

WebDriverWait wait = new WebDriverWait(AdminUtils.driver, 1);
try {
    wait.until(ExpectedConditions.presenceOfElementLocated(By.id("type-radio-private"))).click();
}
catch (TimeoutException) { }
马安邦
2023-03-14

您将需要一个新方法,它所做的只是检查单选按钮是否存在。

public static boolean isPrivateRadioButtonExist() {
    return driver.findElements(By.id("type-radio-private")).size() != 0;
}

然后,在基本测试类中,调用此方法以确定是否需要跳过该步骤。

然而,你处理问题的方式是不正确的。如果您有多个版本的web应用程序,那么您还应该有多个版本的自动测试。一种方法是遵循web应用程序的分支策略。这将避免在代码中使用各种“if”语句。

 类似资料:
  • 我有以下问题:我有沙箱中的代码,我想显示一个按钮,如果复选框被选中,最大数量大于1。最大数量条件不是问题,而是复选框的问题。我不知道如何获得特定复选框的“选中”值。我认为我不能对索引做任何事情,因为索引值在映射optionModules时被多次使用。预先感谢你的帮助。沙盒链接:https://codesandbox.io/s/nostalgic-germain-e18wh

  • 此表单在基于函数的视图中显示单选按钮,但在我引入基于类的视图时更改为复选框,有什么解决办法。我希望他们再次显示单选按钮 表单.py models.py 模板 views.py

  • 我是Selenium IDE的新手,在这里需要选择单选按钮的帮助。就我而言,我正在尝试为由单选按钮组成的特定表单生成一个测试用例。当我运行命令以单独选择其中一个单选按钮时,该函数可以工作,但如果我运行整个测试用例,则单选按钮不会被选中并给出找不到Element Id的错误。这是我的html: 我的IDE命令:单击Target: id=ProjectSolutionsProject0。我尝试了ver

  • 我正在尝试从一组大小未知的单选按钮中进行选择。(多套,但一步一步..)在实际站点上,它们不是值的text1。表单id是随机生成的,但遵循一种模式。所以我不能真的使用它。我得到了一个一致的课程.. 我已经尝试添加结束,什么也不会发生。

  • 链接到我正在尝试刮取的页面: https://www.nytimes.com/reviews/dining 因为这个页面有一个“show more”按钮,所以我需要Selenium自动反复单击“show more”按钮,然后以某种方式使用Beauty soup来获取页面上每个餐厅评论的链接。在下面的照片中,我想获取的链接位于https://...onigiri.html" 迄今为止的代码: 我如何

  • 问题内容: 这是我的HTML代码 我正在尝试,但没有任何价值。 问题答案: 要么 如果ID正在更改…请使用以下XPATH: 要么