【发布时间】:2015-01-03 15:37:01
【问题描述】:
为什么 Protractor 会立即运行每一行代码?
所以我有一个不是用 Angular 编写的网页。我需要我的基于硒的自动化来实现。我已经使用 selenium webdriver-js 代码来实现它。下面的例子。登录后,您将进入包含 3 个问题的页面。每次登录时,问题的顺序都是随机的。因此,您每次登录时可能永远不会以相同的顺序收到相同的问题。
问题 1) 你叫什么名字?
问题 2) 现在几点了?
问题 3)你为什么在这里?
每个问题的答案都是问题的最后一句话。
答案 1) 姓名
回答 2) 它
答案 3) 在这里
所以我想解决这个问题的一个简单方法是创建一个 if 条件语句
var foo = browser.driver.findElement(By.id('question1')).getText();
if(foo == What is your name?) {
browser.driver.findElement(By.id('answer1')).sendKeys('name');
}
else {
blah
}
等等……等等……
但我遇到的问题是量角器在到达该点之前立即运行 if 语句。在下面的示例中,控制台立即打印出控制台日志“这太糟糕了”,因为它立即运行 if 语句,而没有经过第一步到达页面然后检查。
this.foo_test = function() {
console.log('starting foo test');
browser.driver.get('http://my-test-url.com/');
browser.sleep(3000);
browser.driver.findElement(By.id('login')).click();
browser.sleep(3000);
browser.driver.findElement(By.id('user')).sendKeys('user');
browser.driver.findElement(By.id('login_button')).click();
browser.sleep(3000);
console.log('getting variable');
var foo = browser.driver.findElement(By.id('question1')).getText();
console.log(foo);
if (foo == 'What was the name of your first pet?') {
console.log('this is cool');
}
else{
console.log('this sucks');
}
};
【问题讨论】:
标签: javascript angularjs node.js selenium-webdriver protractor