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

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

 

安靜這裏經過小的栗子給你們介紹瞭如何判斷元素是否可見。可能會用小夥伴們問這裏何時會用到?

咱們能夠在本身的框架中封裝一些經常使用的元素操做的方法,而後在傳入元素的時候進行判斷元素是否可見,若是不可見就報錯,這樣就省去了咱們不少時間,固然這裏是安靜經常使用的方法判斷,你們有好的方法也能夠留言一塊兒交流~~

相關文章
相關標籤/搜索