0

我正在尝试通过以下页面的指导在 NodeJS 中学习使用 WebDriverJS-Mocha 进行自动化测试,该场景的编码与 Selenium 2 兼容(与 Selenium 3 不兼容): https ://watirmelon.blog/2015/10/ 28/getting-started-with-webdriverjs-mocha/

而且,我只想知道如何在 Selenium 3 中以布尔类型获取元素存在,因为它在 Selenium 2 中是“isElementPresent”

我正在使用两个 npm 包:

npm install selenium-webdriver@3.4.0
npm install -g mocha

我正在运行我的 js 文件,如下所示:

mocha spec.js

我尝试将其编码如下:

driver.findElements(By.id('sampleID')).then(found => true, function(present) {
        driver.wait(until.elementLocated(By.id('sampleID')), 3000);
        assert.equal(present, true, "Quote container not displayed");
    });
4

2 回答 2

0

看来您应该将等待包装在findElements内部,而不是将等待包装在 findElements 中。您首先等到找到第一个元素,然后找到所有元素。

但是,我也认为您可以自己完成此操作elementLocated

代替:

driver.findElements(By.id('sampleID')).then(function(present) {
    driver.wait(until.elementLocated(By.id('sampleID')), 3000);
    assert.equal(present, true, "Quote container not displayed");
});

做就是了

driver.wait(until.elementLocated(By.css('#sampleID')), 3000).then(function(present){
    assert.equal(present, true, "Quote container not displayed");
});

如果这不能满足您的需求并且您需要 findElements,请先等待,然后使用 findElements 执行您想要的任何操作。

driver.wait(until.elementLocated(By.css('#sampleID')), 3000);
driver.findElements(By.css('#sampleID')).then(function(els){
    assert.equal(present, true, "Quote container not displayed");
});
于 2017-06-17T17:56:23.487 回答
0

您可以通过以下方法实现此目的...

public boolean checkForPresenceOfElementByXpath(String xpath){
    try{
        (new WebDriverWait(driver, 5)).until(ExpectedConditions.visibilityOfElementLocated(By.xpath(xpath)));
        //driver.findElement(By.xpath(xpath));
        return true;
    }catch(Exception e){
        return false;
    }
}
于 2017-05-31T06:42:41.357 回答