nodejs selenium-webdriver 异常捕获

var webdriver = require('selenium-webdriver'),
  By = webdriver.By,
  until = webdriver.until;

//chrome
var driver = new webdriver.Builder()
  .forBrowser('firefox')
  .build();


//判断是否有登陆
function isLogin(driver) {
  try {
    driver.findElement(By.id('loginForm'))
    return true
  } catch (error) {
    return false
  }
}

已经使用 try catch 捕获,但还是会报错不执行下去了

        throw error;
        ^

NoSuchElementError: Unable to locate element: *[id="loginForm"]

selenium-webdriver js 版本的 如何 判断某个元素是否存在呢

阅读 6.2k
2 个回答

selenium webdriver 都是异步的:

driver.findElement(By.id('not-there')).then(function(element) {
  alert('Found an element that was not expected to be there!');
}, function(error) {
  alert('The element was not found, as expected');
});

楼上正解!!

或者下面这种方式,也是ok的~~

async function login(qq, qqmm) {
    await driver.get(`https://user.qzone.qq.com/${qq}/main`);
    await driver.switchTo().frame('login_frame');
    await driver.findElement(By.id('switcher_plogin')).click();
    await driver.findElement(By.id('u')).sendKeys(qq);
    await driver.findElement(By.id('p')).sendKeys(qqmm);
    await driver.findElement(By.id('login_button')).click();
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题