通过CSS发送Selenium findElement并发送表单

时间:2016-01-27 12:40:45

标签: javascript css 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是什么?

UPD:

<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>

1 个答案:

答案 0 :(得分:0)

您使用class属性作为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();

或使用By class

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