selenium---判断元素是否可见

  在定位元素过程当中,常常会遇到元素明明定位成功了,可是报错却提示确实没有找到,这就是面试过程当中常常遇到的元素不可见的问题。html

元素不可见

首先要想到是什么属性致使元素不可见,而后咱们能够经过修改这个属性进行确认。  hidden="hidden"    元素的可见与不可见经过hidden这个属性来控制的。在一个元素前面加上这个属性就会致使当前元素不可见。web

安静这里举个小栗子:面试

这里安静先找个正常的输入框浏览器

<html>
<body>
用户名:<br>
<input type="text" name="username"  id="anjing">
<br>
密码:<br>
<input type="text" name="pwd" id="test">
<br><br>
<input type="submit" value="登陆">
</form> 

<p>点击登陆,进行提交</p>

</body>
</html>

打开浏览器是这个样子的app

进行对用户名下的input标签添加隐藏属性框架

<html>
<body>
用户名:<br>
<input  hidden="hidden" type="text" name="username"  id="anjing">
<br>
密码:<br>
<input type="text" name="pwd" id="test">
<br><br>
<input type="submit" value="登陆">
</form> 

<p>点击登陆,进行提交</p>

</body>
</html>

而后打开浏览器,发现用户名的输入框已经不见了this

这个时候咱们能够经过find_elements的方法判断元素是否存在,而后进行输入框输入内容,查看是否输入成功atom

通过执行结果能够看到,元素是找到的,可是却没有办法进行执行操做。那么selenium中有什么办法能帮助咱们判断元素是否可见?且能执行?spa

is_displayed()

is_displayed()是属于webdriver中的一个方法,能够直接使用。同时也是判断元素是否可见的一个方法,元素可见就返回True,不可见就返回Falsecode

def is_displayed(self):
        """Whether the element is visible to a user."""
        # Only go into this conditional for browsers that don't use the atom themselves
        if self._w3c:
            return self.parent.execute_script(
                "return (%s).apply(null, arguments);" % isDisplayed_js,
                self)
        else:
            return self._execute(Command.IS_ELEMENT_DISPLAYED)['value']

话很少说,直接开始写代码,进行判断元素是否可见

 

安静这里经过小的栗子给你们介绍了如何判断元素是否可见。可能会用小伙伴们问这里何时会用到?

咱们能够在本身的框架中封装一些经常使用的元素操做的方法,而后在传入元素的时候进行判断元素是否可见,若是不可见就报错,这样就省去了咱们不少时间,固然这里是安静经常使用的方法判断,你们有好的方法也能够留言一块儿交流~~

相关文章
相关标签/搜索