如何检查元素在量角器中是否具有显示块/none 样式?

How to check an element is having display block / none style in Protractor?

我有两个具有相同 css 的 div,唯一的区别是样式具有 display:block 和 none。

<div class="autocomplete-suggestions " style="left: 91px; top: 333px; min-width: 747px; display: none;">
   <div>item1</div>
<div>item2</div>
</div>

<div class="autocomplete-suggestions " style="left: 91px; top: 333px; min-width: 747px; display: block;">
   <div>item3</div>
<div>item4</div>
</div>

我们如何识别哪个元素具有样式显示块或量角器中的 none?

我需要点击 display:block div.

所在的项目 3 div

我试过下面的代码。

browser.findElements(by.css('.autocomplete-suggestions')).then((autoSuggestions) => {
            autoSuggestions.map((item) => {
                if (item.isDisplayed()) {
                    item.getTagName().then((x) => {
                        console.log('tagname', x);
                    });
                    browser.pause();
                    //item[index].click();
                }
            })

从上面的代码我可以看到两个 div。

我收到“找不到元素 'click on undefined' 错误。

我正在尝试使用 Anuglar 7、量角器、jasmine 和 selenium 网络驱动程序进行端到端测试。

您需要过滤表达式以考虑 style attribute

您可能会发现 XPath selector easier to write/read/understand, you can use XPath contains() function 到 select 只有 divstyle 属性中具有 display: block 将是:

//div[contains(@class,'autocomplete-suggestions') and contains(@style, 'display: block')]/div[1]

演示:


如果您想继续使用 CSS selectors,则等效表达式为:

div[class*="autocomplete-suggestions"][style *= "display: block"] >:nth-child(1)

如果您正在寻找使用 CSS 作为定位器的选项,那么您可以使用此

element(by.cssContainingText(".autocomplete-suggestions[style*='display: block'] div", "item3"))