javascript - Selenium findElement 通过 CSS 和发送表单

标签 javascript css selenium

我是 selenium 的新手,对我的第一个脚本有一些疑问。

driver.findElement({ css: '.input[name=login]' }).sendKeys('login');
//driver.sleep(0);
driver.findElement({ css: '.input.passwd' }).sendKeys('passwd');
driver.sleep(5000);
driver.findElement({ css: '.button[type=submit]' }).click();                        
driver.sleep(10000);
driver.getTitle().then(function(title) {
    console.log(title);
    assert.ok(title.indexOf('Title') > -1, 'Wrong title');
}

执行后,我仍然在登录页面上,除了“AssertionError: Wrong title”之外没有其他错误。 如果 selenium 找不到某个元素,我会出现类似“NoSuchElementError:没有这样的元素:无法找到元素:”的错误, 所以我认为所有元素都已找到,并且“sendKeys”和“click”等所有操作都有效。但它没有。
在执行脚本期间如何检查它?
我如何查看 selenium 生成并发送到服务器的查询?

更新:

<input name="login" value="" type="text" class="input" tabindex="5">
<input name="" value="" type="password" class="input passwd" tabindex="6">
<input hidefocus="true" type="submit" class="button"></input>

最佳答案

您使用类属性作为 html 标签。例如class=inputname=login都是 <input> 的 WebElement 的属性标签。尝试

driver.findElement({ css: 'input[name="login"]' }).sendKeys('login');
driver.findElement({ css: '.passwd' }).sendKeys('passwd');
driver.findElement({ css: '.button' }).click();

或者

driver.findElement({ name: 'login' }).sendKeys('login');
driver.findElement({ className: 'passwd' }).sendKeys('passwd');
driver.findElement({ className: 'button' }).click();

或者使用按类

driver.findElement(By.name('login')).sendKeys('login');
driver.findElement(By.className('passwd')).sendKeys('passwd');
driver.findElement(By.className('button')).click();

关于javascript - Selenium findElement 通过 CSS 和发送表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35037662/

相关文章:

javascript - 如何在没有 JQuery 的情况下在 Javascript 中获取文件内容

javascript 最佳实践 - 管理脚本/代码重用

html - 如何在 IE11 中使用 flexbox 制作粘性页脚?

java - Selenium java 中的 Click() 看起来有 "clicked"但没有任何反应。在IE浏览器中

javascript - E4X - 检索元素而不检索其子元素

javascript - 阻止文本过度运行它的容器

html - 绘画子菜单中的问题

css - 在显示 : flex 中使用起始宽度初始化 div

selenium - 使用 Protractor 定位链接的最佳方法

java - 如果afterClass方法失败,Gradle测试报告将显示测试失败