【发布时间】:2015-04-22 13:40:58
【问题描述】:
所以我使用的是 Selenium 的 JavaScript 实现,WebDriverJS。与任何网络浏览器自动化一样,最大的障碍是让代码变慢足够长的时间以加载页面元素。我的解决方案是这样的:
对于我想与之交互的每个元素,我都有一个这样的代码块
xpath = "//div[@id='gs_lc0']/input[@id='gbqfq']"
driver.wait(function(){
return waitForElement(xPath,driver);
});
try{
element = driver.findElement(webdriver.By.xpath(xPath));
}catch(e){
console.log("Wait Function False Positive")
}
element.sendKeys("Let Me Google That For You\n";
以this为函数在等待函数中重复
var waitForElement = function(path, driver){
console.log("try: " + path)
try{
driver.findElement(webdriver.By.xpath(path));
}catch (e){
console.log("FAILURE")
return false;
}
console.log("SUCCESS")
return true;
}
现在这段代码有时会起作用,但有时不会。我怀疑等待功能根本不起作用,我只是幸运的网页加载时间。所以为了测试这个理论,我在代码块中添加了 try 函数,我什至无法捕捉到“NoSuchElementError”。所以我的首要问题是,是否有其他方法可以形成 tryCatch 函数,以便捕获这些错误。
如果想要完整复制,这也是我的代码头部的样子
var webdriver = require('selenium-webdriver'), element
var driver = new webdriver.Builder().
withCapabilities(webdriver.Capabilities.chrome()).
build();
driver.get('google.com');
【问题讨论】:
标签: javascript selenium selenium-webdriver try-catch