使用webdriver和selenium验证元素是否不存在

Verify an element is not existing using webdriver and selenium

本文关键字:元素 是否 不存在 验证 selenium webdriver 使用      更新时间:2023-09-26

我正在使用WebdriverIO和selenium-standalone编写自动化测试,以验证用户界面的各个部分是否正常工作。

我需要验证页面上是否不存在元素。例如,我们的系统允许工作人员跟踪我们向客户介绍的各种类型的资源。如果工作人员意外添加了错误的资源,他们可以删除它,我想验证该资源是否已被实际删除,并且不在页面上。

WebdriverIO具有.isExisting()属性,但无法检查某个内容是否不存在(或不可见/不存在)。我也可以用柴的断言来弄清楚这一点,但我还没有深入研究这个世界。

以下是我的代码片段:

it('I can delete a resource from a need', function() {
    return driver
    .moveToObject('span.ccx-tasklist-task') // Hover mouse over resource
    .click('div.referral-controls a.btn.dropdown-standalone') // Click Resource drop-down
    .click('div.referral-controls.ccx-dropdown-menu-selected li > a') // Delete Resource
    .pause(2000);
    // Need to Verify that resource was deleted here

有什么建议吗?如果你需要更多信息,请告诉我。

您可以在reverse选项设置为true的情况下使用waitForExist

.waitForExist( '[id$=OpenNeedsPanel] div.commodities', 500, true )

我能够验证页面上不存在这样的元素:

.isExisting('[id$=OpenNeedsPanel] div.commodities').should.eventually.equal(false);

您可以简单地使用下面提到的代码行

int temp=driver.findElements(By.xpath("your x-path expression")).size();

您甚至可以将您的xpath定位器替换为其他定位器,如id、类、链接等。

现在,如果temp的值>0,这意味着您的元素存在

您可以参考https://webdriver.io/docs/api/element/waitForExist.html

等待元素在DOM中出现所提供的毫秒数。如果选择器至少与DOM中存在的一个元素匹配,则返回true,否则将引发错误。如果reverse标志为true,那么如果选择器与任何元素都不匹配,则命令将返回true。

resource.waitForExist(1000, true);

其中1000是以毫秒为单位的超时。