选择多个具有相同id的元素- WebDriverJS



我必须创建一个具有Selenium, WebDriverJSJasmine的测试,该功能仅在单击连接到div的按钮时显示div的内容,并隐藏具有相同id的所有其他元素。

这是需要测试的函数,这是我迄今为止编写的测试代码片段:

it('should display "BILL2" when the second picture is clicked and hide the others', function() {
    driver.findElement(webdriver.By.css('#img_bill2')).click()
        .then(function(){
            driver.findElement(webdriver.By.css('#bill2')).isDisplayed()
                .then(function(displayed) {
                    expect(displayed).toBe(true);
                });
        })
        .then(function() {
            driver.findElement(webdriver.By.xpath('//div[@class="hide", @style="display:none"]')).isDisplayed()
                .then(function(displayed) {
                    expect(displayed).toBe(false);
                })
        });
});

我被困在这里,因为我想选择所有的元素,除了当前显示的那个。

你有解决这个问题的办法吗?也许使用executeScript()并创建一个脚本来定位所有divsdisplay:none风格可以是一个解决方案?

提前感谢您的回复!

我宁愿不使用.isDisplayed()通过计算不可见元素的数量来解决这个问题。因为所有元素都有display:none,这将确保元素不被显示。

it('should display "BILL2" when the second picture is clicked and hide the others', function() {
    driver.findElement(webdriver.By.css('#img_bill2')).click()
        .then(function(){
            driver.findElement(webdriver.By.css('#bill2')).isDisplayed()
                .then(function(displayed) {
                    expect(displayed).toBe(true);
                });
        })
        .then(function() {
            driver.findElements(webdriver.By.xpath('//div[contains(@class, "hide") and contains(@style, "display: none")]'))
                .then(function(elements) {
                    expect(elements.length).toBe(expectedCount);
                })
        });
});

最新更新