Webdriverjs显然有一个内置的方法,允许你等待一个元素。
var saveButton = driver.wait(until.elementLocated(By.xpath("//div[text() = 'Save']")), 5000);
driver.wait(until.elementIsVisible(saveButton), 5000).click();
使用此方法会导致错误" ReferenceError:直到未定义"。 为什么这种方法不起作用?
答案 0 :(得分:8)
我阅读了webdriverjs文档,并且在那里给出的示例中缺少' webdriver'关键字。
var saveButton = driver.wait(webdriver.until.elementLocated(webdriver.By.xpath("//div[text() = 'Save']")), 5000);
driver.wait(until.elementIsVisible(saveButton), 5000).click();
添加' webdriver'关键字之前'直到'和' By'解决了这个问题。
答案 1 :(得分:6)
最常见的最佳做法是在您需要webdriver后立即在文件顶部要求webdriver.By
和webdriver.until
。
然后你不必在测试中做webdriver.By
,你可以做driver(By.css())
答案 2 :(得分:0)
我不确定您使用的语言绑定。使用Java绑定,在Selenium 3.x版本tests:any = [
{ value: '1', display: 'One', status: 'false'},
{ value: '2', display: 'Two', status: 'false'},
{ value: '3', display: 'Three', status: 'false'},
{ value: '4', display: 'Four', status: 'false'}
]
isVisible:any;
good: string;
form() {
let all: FormArray = new FormArray([]);
for (let i = 0; i < this.tests.length; i++) {
let fg = new FormGroup({});
fg.addControl((this.tests[i].value).status, new FormControl(false))
all.push(fg)
}
if(!this.isVisible) {
this.group.get('tests').enable();
} else {
this.group.get('tests').disable();
}
this.isVisible = this.good;
}
中必须附带until
所以,要在元素&amp;上应用ExplicitWait单击它,您的代码必须如下所示:
ExpectedConditions
如果这解决了您的问题,请告诉我。