javascript - Protractor :无论选择下拉列表的可见性如何,始终获取选择选项状态 "displayed"

标签 javascript selenium automation protractor

我有这样的选择元素:

<select id='mySelect'>
    <option value=0>Monday</option>
    <option value=1>Tuesday</option>
</select>

每当我使用 Protractor 时 isDisplayed()属性来检查选项元素的可见性,它始终返回 true。

element.all(by.css('#mySelect option')).first().isDisplayed(); // always return true

无论单击选择元素,我都会收到此行为。理想情况下它应该只返回 true如果我点击<select>首先元素然后检查可见性。 有什么解决办法吗?

最佳答案

element(by.css('#mySelect')).isDisplayed();不检查选项的可见性,它检查 <select> 的可见性元素。您需要定位 <option>标签

element(by.css('#mySelect option')).isDisplayed();

并检查所有选项

var options = element.all(by.css('#mySelect option'));

options.each((option, index) => {
    option.isDisplayed();
});

作为替代方案,您可以通过检查元素偏移量来检查可见性

var option = element(by.css('#mySelect option'));
var isDisplayed = option.offsetWidth > 0 && option.offsetHeight > 0;

关于javascript - Protractor :无论选择下拉列表的可见性如何,始终获取选择选项状态 "displayed",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60089702/

相关文章:

javascript - 从父级和子级 Http 请求获取可观察数据

javascript - 当 chrome 通过 selenium 运行时,我看不到弹出的模式

python - selenium:即使使用完整的 xpath 也找不到元素

java - selenium webdriver 浏览器 ie10 中文件上传问题

javascript - Cypress 更改了 URL,导致应用程序崩溃

"Google search by image"的 Python 脚本

php - 在 php 和 javascript 中制作 "mosaic"效果

javascript - 如何在 Javascript 中找到当前语言环境的小数点分隔符

javascript - node.js 流中的控制流

java - FireFox 在 selenium webdriver 中非常慢