- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
在使用 AngularJS 构建的 Web 表单中,我尝试将一些数据输入组合框,然后通过按下箭头键和 Enter 键选择一个值。之后,我检查组合框的弹出窗口(它是一个 Kendo UI 组合框)是否不再可见。
测试在 Windows 和 Mac OS X 上的 Chrome 中运行。在 Windows 上,以下代码运行良好:
comboInput.sendKeys('CAN')
.sendKeys(protractor.Key.ENTER)
.sendKeys(protractor.Key.ARROW_DOWN)
.sendKeys(protractor.Key.ENTER);
expect(input.getAttribute('value')).toBe('id_3');
expect(popup.getAttribute('style')).toContain('display: none');
Protractor 在组合框中输入“CAN”,然后使用向下箭头键选择可见条目,然后使用 Enter 键确认选择,这也会关闭组合框弹出窗口。
在 OS X 上,这不起作用,第二个期望总是失败,因为在出于某种原因评估期望之前不会触发用于关闭弹出窗口的 Enter 键事件。
我发现我必须将代码更改为以下内容才能使其工作:
comboInput.sendKeys('CAN')
.sendKeys(protractor.Key.ENTER)
.sendKeys(protractor.Key.ARROW_DOWN)
.sendKeys(protractor.Key.ENTER).then(function() {
expect(input.getAttribute('value')).toBe('id_3');
expect(popup.getAttribute('style')).toContain('display: none');
});
sendKeys
返回一个 promise ,如果我将期望放在那里,一切都会正常进行。
这是执行此操作的正确方法吗?我在网上找到的所有示例都没有使用 then
调用 sendKeys
。
为什么第一个代码可以在 Windows 而不是 OS X 上运行?我错过了什么吗?有更好的方法吗?
编辑:这可能与 OS X 上 native 键盘事件的处理有关吗? Protractor 文档位于 http://angular.github.io/protractor/#/api?view=webdriver.WebElement.prototype.sendKeys具有以下内容:
Note: On browsers where native keyboard events are not yet supported (e.g. Firefox on OS X), key events will be synthesized. Special punctionation keys will be synthesized according to a standard QWERTY en-us keyboard layout.
最佳答案
由于 sendKeys
返回一个 promise,它是异步的(如您所知)并且在任何机器上发生的时间都可能晚于预期。我强烈怀疑如果您在 Windows 上运行测试 1000 次,它至少会因为同样的原因失败几次。
我几乎老了,试图为这种情况找到“最佳实践”,但我不认为有一个,除了你已经在做的。我的许多依赖于 promise 返回操作的 Protractor 测试最终都是长串的 then()
语句,其中包含匿名函数。查看链接:
How to assign count of rows or getText to a variable in Protractor
基本上,如果您不强制 Protractor 按正确的顺序做事,那么十有八九会以错误的顺序发生。
关于javascript - 等待 sendKeys() 的 Protractor ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26272513/
其使用格式为: object.SendKeys string "object":表示WshShell对象 "string":表示要发送的按键指令字符串,需要放
如何使用命令 sendKeys(Keys.TAB) 和 sendKeys("text") 填写列中的几个字段。例如:页面底部的“联系我们”表单中有 3 个字段: 姓名 电子邮件 留言和“提交”按钮。
sendkeys(keys.Down) 和 sendkeys(keys.Arrow_Down) 之间有什么区别在 Selenium java中 最佳答案 没有区别,在以前版本的 selenium 中,
我的测试是在搜索文本框中输入键(主要是ajax),然后按键盘上的回车键。没有“开始”搜索的按钮,因此我们使用 Enter 键。 我使用 ChromeDriver,因为我们的应用程序在此流程中不支持 F
我试图在 sendKeys 方法 [type WebElement] 中将“String”作为参数发送,但系统将其用作 char 序列,所以我没有得到正确的输出。 public static
我想在新窗口中打开应用程序的链接。使用操作类在我当前所在的同一窗口中打开链接。 我尝试在多个应用程序的 Chrome 驱动程序和 Firefox 驱动程序上使用带有以下代码的 Actions 类,但没
据我所知,有两种使用 Selenium 进行输入的方法: new Actions(webDriver).sendKeys("text to send").perform(); webElement.s
我正在使用 Selenium 通过 VS Code 用 Java 进行编写。 我无法编译这行代码,因为 sendKeys 方法下有一条红线。 代码行是: driver.findElement(By
我正在使用以下过程作为 OnTime 方法的一部分: Public Sub Countdown() ThisWorkbook.Activate SendKeys ("{ESC}")
我是 VBA 的新手,我的研究表明我不应该使用 .SendKeys,因为它不可靠。我应该为以下使用什么替代代码? Application.SendKeys ("{Home}") 最佳答案 这看起来选择
我正在使用 .SendKeys()在 Excel VBA 中将击键发送到我正在使用 shell .AppActive 激活的外部窗口方法。问题是 SendKeys只是行为不一致,有时发送 key ,有
我正在使用 (new Actions(driver).sendKeys(String).perform() 将输入发送到 webdriver。但是,我一直得到不一致的结果。有时 String 会完美发
我用 Java 编写了脚本,它正在 Chrome 浏览器中运行。我有一个用户名字段、密码字段和一个登录按钮。甚至在完成用户名字段中的输入之前,它就开始在密码字段/登录按钮上执行操作。 这是我的代码,
我使用 sendkey 访问 Power Query 并连接到 SharePoint 文件夹。一切都很顺利,直到出现 Power Query 数据预览对话框。 如何允许 sendkey 在对话框出现后
我在输入一些特殊字符时遇到了一些问题 SendKey.Send("~!@#$%^&*()_+|") . 当我尝试输入 ~!@#$%^&*()_+| 时, 只有 !@#$*_|已输入。 有办法解决这个问
我创建了一个键盘应用程序,它保持在顶部,但不获取焦点,因此在触摸屏上它会通过 SendKeys 将您按下的任何键转发到事件应用程序。 它与我尝试过的每个应用程序都完美配合……当然,除了我实际需要它使用
我正在尝试使用 sendkeys,但将它发送到一个非焦点程序。例如,我想使用 sendkeys 到 Notepad - Untitled,但它没有被聚焦。抱歉,如果不清楚,我会详细说明。我当前的代码是
我希望我的 C# 程序在继续之前关闭某个遗留应用程序。使用 ctrl+x 可以立即关闭旧版应用程序。我可以使用 Sendkeys 来做到这一点,但我听说 sendkeys 可能有点不稳定。有没有其他方
您好,我已经在 login-page.js 中编写了这段代码 我不知道为什么会出现错误 失败:无法读取未定义的属性“sendKeys” 我在 login_spec.js 上调用了这个页面 我无法在 P
我在表单中有两个输入字段,它们的来源在下面提到 我正在尝试在 selenium 网络驱动程序 (Firefox) 中使用以下命令发送输入 driver.findElement(By.cssSele
我是一名优秀的程序员,十分优秀!