如何测试 img 标签是否存在?

2024-02-15

if I do expect(img).not.toBe(null)然后我得到一个错误:Error: expect called with WebElement argment, expected a Promise. Did you mean to use .getText()?。我不想获取 img 中的文本,我只想知道页面上是否存在该标签。

describe('company homepage', function() {
it('should have a captcha', function() {

    var driver = browser.driver;
    driver.get('http://dev.company.com/');

    var img =driver.findElement(by.id('recaptcha_image'));

    expect(img.getText()).not.toBe(null);
});
});

通过,但我不确定它正在测试正确的东西。将 id 更改为不存在的内容确实会失败。

如何在非角度应用程序上下文中正确测试标签是否与量角器一起存在?


Edit 2:

根据下面的 Coding Smackdown,量角器中现在提供了更短的答案:

expect(element(by.id('recaptcha_image')).isPresent()).toBe(true);


Edit 1:

我今天发现 isElementPresent() 这只是我下面描述的一个更易读的快捷方式。看:http://www.protractortest.org/#/api http://www.protractortest.org/#/api

您的用法是:

driver.isElementPresent(by.id('recaptcha_image')).then(function(present){
    expect(present).toBe(false);
})

旧答案(这有效,但上面的内容对读者更友好)

一般来说,如果您不确定标签是否存在,则应该使用 findElements (或 $$,它是 css 的 findElements 的别名)。然后测试数组长度。如果 FindElement (和 $)找不到该元素,它只会抛出错误。

因此而不是

var img =driver.findElement(by.id('recaptcha_image'));

expect(img.getText()).not.toBe(null);

use:

driver.findElements(by.id('recaptcha_image')).then(function(array){
    expect(array.length).not.toBe(0);
})

另外, getText() 返回一个承诺,这就是您收到该错误的原因。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何测试 img 标签是否存在? 的相关文章

  • 有没有办法通过为每个测试打开浏览器实例来并行运行量角器测试?

    我的量角器测试面临同步问题 我想与我的实际设置相比并行运行我的测试 事实上 目前我的测试一个接一个地运行 我知道如何使用 TestsNG 执行此操作 但不确定如何使用 Jasmin Framework 执行此操作 要在两个浏览器之间分配测试
  • 在 Protractor 中使用 jasmine-reporters 时无法生成报告

    我在配置中使用了以下代码 var jasmineReporters require jasmine reporters onPrepare function browser driver manage window maximize bro
  • e2e 测试 Angular UI 网格的规范方法

    故事 最近 我们的 UI 从自定义表格切换为角度 UI 网格 http ui grid info 随着它变得稳定且功能丰富 主 Angular UI 网格页面声称具有 e2e 测试集成 但我们很难让这项工作成功 据我们了解 e2e测试集成
  • 通过 Protractor e2e 测试下载并使用文件

    如何编写下载文件并将其以表单形式发布的测试 it should support download and upload a file gt upload element By id UploadInput upload sendKeys C
  • 量角器拖放:Angular 与 Angular with HTML5

    我在量角器测试中遇到了拖放问题 就像其他人一样 但一般情况下没有 仅在使用 HTML5 的角度应用程序中 为了演示 我使用两个演示拖放功能的网页编写了一个小型量角器测试套件 第一个页面 在第一个测试用例中使用 演示了 AngualarJS
  • 茉莉花量角器打字稿在其块中发生预期故障后继续执行

    我正在使用 Protractor jasmine 框架和打字稿 所以我在describe中有多个it块 所以在每个it块内有很多方法或期望条件我正在验证 因此 当前当其中一个期望失败时 整个块就会终止 所以即使在一步失败后我也想继续执行 下
  • Protractor:彻底清除浏览数据

    我正在寻找一种使用 Protractor 完全删除所有 cookie 会话 状态 cookie 存储等的方法 基本上 我想在量角器中完成与用户相同的事情 方法是转到 设置 gt 清除浏览数据 browser manage deleteAll
  • Protractor 中的全局 beforeEach 和 afterEach

    在每个规范中我都有beforeEach and afterEach声明 是否可以以某种方式全局添加它以避免规范之间的代码重复 目的beforeEach and afterEach 函数是添加一个重复代码块 每次开始或完成执行每个规范时都需要
  • 根据 getText() 的文本从 Protractor 中的 ElementArrayFinder 获取特定元素

    我正在尝试根据所需元素的文本从 ElementArrayFinder 获取特定的 ElementFinder 例如 假设我有 Angular2 应用程序提供的以下 HTML 片段 ul li span Adam span span clas
  • 如何生成诱惑报告

    我是魅力报告的新手 想要生成魅力报告 有人能帮忙吗 我正在尝试一个简单的示例 我的项目文件夹包含 config js 和 test js 以及安装的魅力报告 当我运行配置文件时 它会创建一个文件夹 allure results 在其中我可以
  • Protractor 中 element(...) 和 element(...).getWebElement() 之间的区别

    为什么我们需要element getWebElement over element 当两者的工作原理完全相同时 为什么两个 API 具有相同的功能 Protractor是一个方便的包装WebDriverJS javascript 硒绑定 e
  • Protractor e2e 测试登录重定向

    目前有部分端到端测试 输入用户名 密码并单击 登录 它成功完成了这一操作 但在 谢谢您已登录 页面结束 而不是像我通过浏览器登录那样被重定向到 帐户门户 或 仪表板 这个项目是新的 但我们正在使用 OAuth 主要问题 这听起来像是需要 h
  • 在 Protractor 测试中同步处理

    我正在尝试在量角器中编写一个我认为相当简单的测试 但似乎当您尝试同步执行任何操作时 量角器就会让您的生活变得困难 通常 处理定位器函数 返回 Promise 不是问题 因为任何 Expect 语句都会在测试断言之前自动解析传递给它的任何 P
  • 在运行量角器测试时进行 API 调用

    我已经使用构建了一个网络应用程序angular2 0 and typescript 现在我正在写E2E为我的网站使用protractor 现在 在我的一项测试中 我需要进行 API 调用 HTTP GET 请求 并使用响应值作为测试用例中的
  • 拖放在浏览器堆栈中的 safari 浏览器中未触发

    使用的代码 第一次迭代 line1 Functions highlightelement vertical slider highlights the given xpath value line2 browser actions drag
  • 量角器按钮单击并在新选项卡中打开页面

    我对量角器相当陌生 我正在尝试自动化一个场景 其中我单击一个按钮 它会在新选项卡中打开一个页面 然后我们需要在新页面中填充表单并提交 Issue 当我单击按钮打开新页面时 我的测试不会等待新页面加载并显示测试完成和成功消息 我正在使用该按钮
  • Protractor:单击按钮后如何等待页面完成?

    在测试规范中 我需要单击网页上的按钮 然后等待新页面完全加载 emailEl sendKeys jack passwordEl sendKeys 123pwd btnLoginEl click Here need to wait for p
  • for 循环内的 Promise

    我正在为此苦苦挣扎 点击按钮获取一组数据 检查返回的行数是否符合我的预期 我需要运行 10 次 每次我期望不同的行数 下面的代码片段不起作用 因为 i 不是我所期望的 我怎样才能做到这一点 for var i 0 i lt subEleme
  • 无法获取长度

    我是 javascript 概念的新手 为什么我得到相同变量的不同输出length 当它在体内呈现出预期的效果时 var length element all by className className getText then func
  • getLocationAbsUrl 与 getCurrentUrl

    在量角器中 全球可用browser对象有两个方法 getLocationAbsUrl http angular github io protractor api view Protractor prototype getLocationAb

随机推荐

  • 在 GPU 上计算平方欧氏距离矩阵

    Let p是第一组位置的矩阵 其中每行给出特定点的坐标 同样 让q是第二组位置的矩阵 其中每行给出特定点的坐标 那么两两平方欧氏距离的公式为 k i j p i q j p i q j where p i 表示i矩阵第 行p and p 表
  • 如何命名 PowerPoint 幻灯片中的对象?

    所以我知道如何使用 VB 命名文本框或 PowerPoint 中的类似对象 但我想知道是否有一种方法可以通过功能区命名对象 PowerPoint 2007 例如 如果我在幻灯片上添加一个文本框 有没有办法为其指定一个名称 有点像 Acces
  • Java/Kotlin 注释处理器:获取注释字段/属性的类型

    例如我有一堂课 class Foo AnnotatedProp var foo Boolean null 我怎样才能得到类型foo我的自定义注释处理器中的属性 在伪中我期望类似的东西 annotatedElement getStringif
  • Julia 中的 1 元素数组到标量

    将行向量和列向量相乘 我期望结果是标量 但它是一个一维 单元素数组 julia gt 1 2 3 4 5 6 1 element Array Int64 1 32 问题1 这背后的理由是什么 问题 2 将此视为 Julia 的一个怪癖 我想
  • 在 Swift 中解析 CSV 文件

    应用程序启动时 我需要将数据预加载到我的 tableView 中 所以我通过解析 csv 文件来使用核心数据 我正在关注本教程 http www appcoda com core data preload sqlite database 以
  • 在 Angular 4 cli 项目中的何处添加 htaccess 文件以添加重写规则?

    我已经完成了角度项目 现在我想完全使用 htaccess 文件强制更改一些 url 格式 那么我应该将 htaccess 文件放在哪里 我已经尝试过像下面的路径这样的地方 opt lampp htdocs GreatColoradoHome
  • 如何获得每列的平均值,按某分组?

    我正在使用 R 我有一个数据集 group attribute1 attribute2 attribute3 A 1 2 3 A 2 3 4 B 2 4 2 B 2 2 1 如何编写输出函数 group attribute1 attribu
  • 过滤 dataTables.net,不包含过滤框输入

    我想使用DataTables的过滤功能 但不想使用他们的搜索框 在他们的文档中 http datatables net usage featuresbFilter 下显示 请注意 如果您希望在数据表中使用过滤 则必须保持 true 要删除默
  • ResultSet getString 字符编码为 un​​icode 字符

    在我的 swing 应用程序中 我将显示数据库中的印地语 unicode 字符 当我显示名称时 它按原样显示 而不是印地文字符串 但是当我将其硬编码到程序中时 它显示正确 问题是什么 从数据库获取数据时是否有任何字符编码选项 我正在使用 O
  • Titanium api.info 从不在控制台中显示任何内容

    我刚刚开始使用钛 但我无法制造Ti API info 我的日志消息 在控制台中打印任何内容 我尝试在我的 Android 设备 Android 模拟器 iPhone 模拟器中以及 GoogleChrome 中作为移动 Web 项目运行该应用
  • 为此我需要哪种音频播放技术?

    我在选择正确的音频播放技术时遇到了困难 iPhone 上使用了大量的技术 令人眼花缭乱 我需要做的是这样的 开始播放 0 1 到 2 秒之间的短声音 高品质播放 无爆裂声 我听说一些 iPhone 音频播放技术在开始或结束时会发出爆裂声 这
  • 替换标准 Android JSON 解析器以获得更好的性能?

    我知道 Android 有一个内置的 JSON 解析器 但我想知道是否值得使用提供更好性能的东西 比如 Jackson 请参阅http jackson codehaus org http jackson codehaus org 有人试过吗
  • 会议结束后如何获取 Twilio 会议参与者?

    根据 Twiliodocs https www twilio com docs api rest participant list get filters curl G https api twilio com 2010 04 01 Acc
  • Android 6.0.1 - 权限问题 = wifiManager.getScanResults() 返回 0

    PermissionsList add 不起作用 但 MainActivity this requestPermissions 工作正常 问题是它会带来一个对话框 询问用户是否允许位置权限 为什么添加权限不起作用 有没有办法避免对话框 请参
  • Jenkins - 将数组/列表传递给参数化远程构建

    我正在使用 Jenkins 通过以下方式远程运行 Ansible playbookPublish Over SSH命令 这个命令 curl k v X POST https jenkins myhost com job Ansible De
  • 将数据框的列名称作为每列图的标题

    我有一个包含 36 列和 3000 多行的数据框 我正在使用绘图函数for loop绘制每列的图表 我希望图表的标题显示为列名称 我怎样才能做到这一点 for i in c 1 36 plot DowData i type l main c
  • CSS 背景图像未显示高度自动

    我有一个带有背景图像的 div 我必须指定一个以 px 为单位的高度才能显示 但我希望它在宽度调整时以自动高度显示 我被困住了 当我有高度自动时 它根本不显示图像 slider shadow1 z index 9999 margin 0 a
  • Git 挑选那些包含关键字(跟踪 ID)的提交

    出于代码审查的目的 我想 樱桃选择特定提交 与他们一起创建一个新分支并 将该分支推送到远程 这样我就可以将分支 url 提供给同行进行审核 我想创建一个 shell 脚本并发出简单的命令 例如 git review
  • 无法在 sqlfiddle (oracle) 上的选择查询中使用列名

    如果我错误地使用 sqlfidle 或者缺少功能 我不会 重现步骤 选择oracle选项 左上角 创建表并插入数据 CREATE TABLE products P Id int ProductName varchar2 10 UnitPri
  • 如何测试 img 标签是否存在?

    if I do expect img not toBe null 然后我得到一个错误 Error expect called with WebElement argment expected a Promise Did you mean t