为什么使用内置webdriver等待产生错误" ReferenceError:直到没有定义"?

时间:2017-05-01 06:06:32

标签: selenium selenium-webdriver

Webdriverjs显然有一个内置的方法,允许你等待一个元素。

var saveButton = driver.wait(until.elementLocated(By.xpath("//div[text() = 'Save']")), 5000);
driver.wait(until.elementIsVisible(saveButton), 5000).click();

使用此方法会导致错误" ReferenceError:直到未定义"。 为什么这种方法不起作用?

3 个答案:

答案 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.Bywebdriver.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

如果这解决了您的问题,请告诉我。