selenium---判斷元素是否可見


  在定位元素過程中,經常會遇到元素明明定位成功了,但是報錯卻提示確實沒有找到,這就是面試過程中經常遇到的元素不可見的問題。

元素不可見

首先要想到是什么屬性導致元素不可見,然后我們可以通過修改這個屬性進行確認。  hidden="hidden"    元素的可見與不可見通過hidden這個屬性來控制的。在一個元素前面加上這個屬性就會導致當前元素不可見。

安靜這里舉個小栗子:

這里安靜先找個正常的輸入框

<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>

打開瀏覽器是這個樣子的

進行對用戶名下的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>

然后打開瀏覽器,發現用戶名的輸入框已經不見了

這個時候我們可以通過find_elements的方法判斷元素是否存在,然后進行輸入框輸入內容,查看是否輸入成功

經過執行結果可以看到,元素是找到的,但是卻沒有辦法進行執行操作。那么selenium中有什么辦法能幫助我們判斷元素是否可見?且能執行?

is_displayed()

is_displayed()是屬於webdriver中的一個方法,可以直接使用。同時也是判斷元素是否可見的一個方法,元素可見就返回True,不可見就返回False

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']

話不多說,直接開始寫代碼,進行判斷元素是否可見

 

安靜這里通過小的栗子給大家介紹了如何判斷元素是否可見。可能會用小伙伴們問這里什么時候會用到?

我們可以在自己的框架中封裝一些常用的元素操作的方法,然后在傳入元素的時候進行判斷元素是否可見,如果不可見就報錯,這樣就省去了我們很多時間,當然這里是安靜常用的方法判斷,大家有好的方法也可以留言一起交流~~

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM