Protractor - 检查单选按钮是否被选中

2024-03-20

所以我遇到了这个问题,我运行量角器/硒测试,有时在测试过程中已经检查了单选按钮,有时则没有。

etc:

<div id="TRUCK" class="radio-item checked" data-gtm="truck">

or

<div id="TRUCK" class="radio-item" data-gtm="deliveryOpt-truck">

您可以在其中看到该类有时具有“检查”初始化,有时则没有。

我想要解决的问题是,我想创建一个函数,如果未选中单选按钮,则单击该函数,如果它已选中,则我们只需继续。

我设法做的是:

it('Clicking Truck button', function (done) {

    browser.driver
        .then(() => browser.wait(EC.presenceOf(element(by.id("TRUCK")))), 30000, "Timed out button")
        .then(() => browser.executeScript("arguments[0].click();",element(by.id("TRUCK")).getWebElement()))
        .then(() => done());

然而问题是,如果单选按钮已经被选中,它将取消选中它,这不好。再次如此。

我正在尝试制作一个点击的功能。如果单选按钮未选中,则我们单击。如果已经检查过,那么我们继续。

我怎样才能做到这一点?


看来你很接近。识别一个元素时class属性不包含值checked您可以使用以下任一方法定位策略 https://stackoverflow.com/questions/48369043/official-locator-strategies-for-the-webdriver/48376890#48376890:

  • xpath:

    //div[@id='TRUCK' and not(contains(@class,'checked'))]
    
  • css:

    div#TRUCK:not(.checked)
    

实际上,如果您的用例是调用click()当。。。的时候class属性没有值checked, 代替presenceOf()你需要使用预期条件 elementToBeClickable() https://www.protractortest.org/#/api?view=ProtractorExpectedConditions.prototype.elementToBeClickable您可以使用以下任一方法定位策略:

  • xpath https://www.protractortest.org/#/api?view=webdriver.By.xpath:

    it('Clicking Truck button', function (done) {
    
        browser.driver
        .then(() => browser.wait(EC.elementToBeClickable(element(by.xpath("//div[@id='TRUCK' and not(contains(@class,'checked'))]")))), 30000, "Timed out button")
    
  • css https://www.protractortest.org/#/api?view=webdriver.By.css:

    it('Clicking Truck button', function (done) {
    
        browser.driver
        .then(() => browser.wait(EC.elementToBeClickable(element(by.css("div#TRUCK:not(.checked)")))), 30000, "Timed out button")
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Protractor - 检查单选按钮是否被选中 的相关文章

随机推荐

  • 如何在不授予 Google 签名权限的情况下发送应用程序包?

    在米莱娜 尼科利奇的 Google Play 的新功能 https www youtube com watch v cMr b660Esw作为 Google 的一部分的演示文稿 android11发射 她说 随着我们不断改进 App Bun
  • 使用 Laravel 和 Passport 响应身份验证失败时返回状态代码 401?

    我正在配置 Laravel 项目以使用 Passport 令牌身份验证 一切似乎都正常 但是当auth api中间件失败 它以状态响应客户端200以及响应正文中的一堆 HTML 相反 我希望它以以下状态响应401 我在 Laravel Pa
  • 不变失败:您不应在 之外使用

    I use react router dom用于我的路由React应用 我的应用程序的一部分提取到另一个包中 依赖项列表如下所示 app dashboard package json dependencies app components
  • 您可以通过 Android studio 将 Android 应用程序作为 ARC 应用程序启动吗?

    我想知道是否有一种方法可以从 Android Studio 启动和 或构建 ARC 应用程序 而不必每次都手动使用 ARC 焊机 在开发过程中手动执行此操作可能非常麻烦 尤其是在发布过程中 您必须对同一应用程序的约 15 种不同风格执行相同
  • 从多个 SQL Server 表中选择 TOP 4 记录。使用vb.net

    我有大约 4 个不同的表 它们具有完全相同的列名 我想要做的是从所有这些按日期排序的表中选择前 4 条记录 因为日期是它们共享的列之一 我不断收到错误的语句 无论是语法问题还是不明确的记录等 本质上我的声明类似于 SELECT TOP 4
  • 如何在 AngularFire2 中获取 firebase.User

    我正在使用 AngularFire2 Ionic2 和 Firebase 身份验证 我在尝试获取当前用户时遇到问题 这对我有用 但不一致 有时它被填充 有时它为空 let user firebase User firebase auth c
  • 打开带有动态内容的窗口

    是否可以从 PHP 打开一个具有预定义内容的窗口 很明显 您可以从框架现有页面的 javascript 链接打开一个窗口 或者仅从引用现有页面的常规 a 标记执行 target blank 但我正在生成一些内容 并希望在新链接中打开该内容
  • 如何在命令行中从 .NET 程序集获取 IDL(或如何将 TLB 转换为 IDL)?

    我们有一个 NET 程序集 实际上是 Aspose Words 我们希望客户端能够从 COM 客户端轻松使用它 因此 我们随程序集提供了 TLB 以便客户端可以从 C 或 Delphi 等语言中使用它 而不必自己提取 TLB 我们还随程序集
  • 将所有对象从一个 Realm 复制到另一个 Realm

    我正在尝试添加使用领域将以前导出的数据库加载到手机应用程序中的功能 该数据库包含在一个 zip 文件中 我将其从电子邮件导入到应用程序中 将其提取 然后将领域文件写入应用程序本地存储 将其写入文件后 我将加载备份领域文件 查询对象 然后将它
  • SQLite3 Node.js JSON

    我正在使用sqlite3NPM 包 我想将 JSON 存储在我的数据库列之一中 据我所知 SQLite本身能够存储JSONhttps www sqlite org json1 html https www sqlite org json1
  • Coq 中的案例分析证明

    我试图证明关于以下函数的命题 Program Fixpoint division m nat n nat measure m nat match lt nat 0 n with false gt 0 true gt match leq na
  • Steam:使用 PHP 将 SteamID64 转换为 SteamID

    有人如何使用 PHP javascript 将 steamid64 例如 76561198074259974 转换为 steamid STEAM 0 0 56997123 我想在加载屏幕上显示 steamid 但不是 steamid64 看
  • 在 C# 中查找 MP3 长度

    我在用着TagLib http developer novell com wiki index php TagLib Sharp从一些 MP3 中获取 ID3 标签数据 但我似乎无法找到 MP3 的长度 如何在 C 中找到 MP3 的长度
  • Microsoft Teams Tab 应用程序无法访问剪贴板

    I m developing the Microsoft Teams Tab application Tab application is run inside Microsoft Teams through iframe so there
  • 上下文操作模式自定义行为

    在 Android 开发者中菜单指南 http developer android com guide topics ui menus html CAB其中提到 当用户取消选择所有项目 按 后退 按钮或选择操作栏左侧的 完成 操作时 操作模
  • 中继器控件 - 取消特定项目的绑定

    在转发器控件中 是否有一种方法可以在呈现页面之前解除某些项目的绑定 目前 我们有一个绑定到转发器的项目集合 如果该项目不是当前语言的一部分 我们将隐藏该项目 我希望能够对中继器进行计数并返回有效的号码 不包括隐藏项目的计数 是否可以解除特定
  • 创建实时数据仓库

    我正在做一个个人项目 其中包括创建数据仓库 DWH 的完整架构 在本例中 作为 ETL 和 BI 分析工具 我决定使用 Pentaho 它具有许多功能 从允许轻松创建仪表板到完整的数据挖掘流程和 OLAP 多维数据集 我读过数据仓库必须是关
  • 在Java中使用分隔符(与分割相反)连接数组元素的一种快速而简单的方法[重复]

    这个问题在这里已经有答案了 See 相关 NET 问题 https stackoverflow com questions 455438 opposite of string split with separators net 我正在寻找一
  • 为什么 std::vector 这么快(或者我的实现太慢)

    前几天我在玩游戏 试图看看我能在多大程度上优化某些东西 我决定从一个简单的映射开始 它只进行线性搜索来查找元素是否存在 然后尝试对其大部分进行优化 另外 为了进行比较 我使用 std find 对 std map 和 std vector
  • Protractor - 检查单选按钮是否被选中

    所以我遇到了这个问题 我运行量角器 硒测试 有时在测试过程中已经检查了单选按钮 有时则没有 etc div class radio item checked or div class radio item 您可以在其中看到该类有时具有 检查