selenium-webdriver - 如何检查元素在量角器中是否具有显示块/无样式?
问题描述
我有两个具有相同 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>
我们如何识别量角器中哪个元素具有样式显示块或没有?
我需要单击与 display:block div 一起驻留的 item3 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。
我收到“找不到元素”单击未定义“错误。
我正在尝试使用 Anuglar 7、量角器、jasmine 和 selenium 网络驱动程序进行端到端测试。
解决方案
您需要过滤表达式以考虑style
属性。
您可能会发现XPath 选择器更易于编写/阅读/理解,您可以使用XPathcontains()
函数 仅选择属性div
中具有以下内容display: block
的选项:style
//div[contains(@class,'autocomplete-suggestions') and contains(@style, 'display: block')]/div[1]
演示:
如果您想继续使用CSS 选择器,等效表达式将是:
div[class*="autocomplete-suggestions"][style *= "display: block"] >:nth-child(1)
推荐阅读
- javascript - 当前页面焦点样式未使用 javascript 正确设置,出了什么问题
- java - 我怎样才能摆脱日食中的自动替换?
- devextreme - DevExtreme:ASP.NET Core:dxTileView:以编程方式选择/聚焦磁贴
- java - 不能使用处理程序延迟启动片段
- sift - 在 VMware 工作站 16 pro 上下载 Sift 工作站时出现问题
- ssl - 存储在 SSL 配置 XML 中加密的 keyStorePassword 值
- react-native - 开玩笑无法编译流程(react-native)
- flutter - ScrollablePositionedList 初始滚动偏移量
- iframe - 如何在 youtube 直播视频 iframe 嵌入代码中仅显示质量选项并隐藏其他选项
- c++ - 类设置器函数的问题。类设置器函数未正确分配值