我正在使用Selenium 2 Java API和FirefoxDriver.当我填写表单时,根据表单输入将复选框添加到页面.
我想使用Selenium模拟这些复选框的点击.该元素在常规浏览器中可见并可用,但selenium断言元素不可见.
"Element is not currently visible and so may not be interacted with"
Run Code Online (Sandbox Code Playgroud)
我可以强制硒忽略元素的不可见状态吗?如何强制Selenium与不可见元素进行交互?
这是如何实现的?在这里它说java版本是:
WebDriver driver; // Assigned elsewhere
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("return document.title");
Run Code Online (Sandbox Code Playgroud)
但我找不到C#代码来做到这一点.
我有类似这样的代码:
ExamPage.prototype.enterDetailsInputData = function (modifier) {
page.sendKeys(this.modalExamName, 'Test Exam ' + modifier);
page.sendKeys(this.modalExamVersionId, 'Test exam version ' + modifier);
page.sendKeys(this.modalExamProductVersionId, 'Test exam product version ' + modifier);
page.sendKeys(this.modalExamAudienceId, 'Test exam audience ' + modifier);
page.sendKeys(this.modalExamPublishedId, '2014-06-1' + modifier);
page.sendKeys(this.modalExamPriceId, '100' + modifier);
page.sendKeys(this.modalExamDurationId, '6' + modifier);
};
Run Code Online (Sandbox Code Playgroud)
这是page.sendKeys函数.请注意,目前这不是任何承诺或类似的回报.如果函数编码不好,那么欢迎评论:
// page.sendkeys function
sendKeys(id: string, text: string) {
element(by.id(id)).sendKeys(text);
}
Run Code Online (Sandbox Code Playgroud)
我看着它慢慢填满我屏幕上的每个字段,然后在接下来的更多测试中一次又一次地重复它.
有没有什么方法可以优化这个或者我必须等待一个字段接一个填充并且必须忍受需要很长时间才能运行的测试?
我认为sendKeys是基于承诺的.我可以使用AngularJS $ q同时发出所有sendKeys然后使用$ q等待它们完成吗?
webdriver angularjs selenium-webdriver protractor chrome-web-driver