Raf*_* C. 4 javascript selenium node.js selenium-webdriver
我的问题:我有一种填充字段的方法,但是问题是硒没有将完整的字符串发送到该字段,因此我的断言在验证时失败。
我的代码:
var webdriver = require('selenium-webdriver');
var casual = require('casual');
var expect = require('chai').expect;
var By = webdriver.By;
exports.addPropuesta = function (driver) {
var first_name = casual.first_name;
driver.findElement(By.xpath("//a[contains(text(),'Añadir Propuesta Test')]")).click();
name_field = driver.findElement(By.name('nombre'));
name_field.sendKeys(first_name);
driver.findElement(By.css("Input[type='submit']")).click();
driver.findElement(By.css('.table')).getText().then(function(table_content){
expect(table_content).to.include(first_name);
});
};
Run Code Online (Sandbox Code Playgroud)
看来这是一个常见问题。
在尝试变通办法之前,要进行健全性检查,请确保在发送键之前输入字段已准备好接收输入。您也可以尝试在调用SendKeys之前清除该字段。我假设您看到的字符串被截断了,而字符没有丢失或带有某些伪像(例如占位符文本或先前测试的剩余输入)。
如果不起作用,请采取以下解决方法:
使用JavaScript而不是调用SetKeys来设置输入字段的值。在执行此操作的某些网站上,除非我也触发输入更改事件,否则实际上不会识别输入值。
C#中的示例。希望您唯一需要做的更改是使ExecuteScript改为executeScript。
driver.ExecuteScript("var exampleInput = document.getElementById('exampleInput'); exampleInput.value = '" + testInputValue + "'; exampleInput.dispatchEvent(new Event('change'));");
Run Code Online (Sandbox Code Playgroud)
当然,您可以将其分为两行,一行设置值,第二行发送事件。
分别发送每个密钥。这是一个变通办法,我已经从线程中多次看到有关此问题的信息。
for (var i = 0; i < first_name.length; i++) {
name_field.sendKeys(first_name.charAt(i));
}
Run Code Online (Sandbox Code Playgroud)https://github.com/angular/protractor/issues/3196
https://github.com/angular/protractor/issues/2019
等。等等。通过简单搜索“ webdriver sendkeys not wait,可以找到更多线程”对于所有键”,如果您想寻找解决问题的其他方法。
| 归档时间: |
|
| 查看次数: |
3101 次 |
| 最近记录: |