在定位元素過程當中,常常會遇到元素明明定位成功了,可是報錯卻提示確實沒有找到,這就是面試過程當中常常遇到的元素不可見的問題。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()是屬於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']
話很少說,直接開始寫代碼,進行判斷元素是否可見
安靜這裏經過小的栗子給你們介紹瞭如何判斷元素是否可見。可能會用小夥伴們問這裏何時會用到?
咱們能夠在本身的框架中封裝一些經常使用的元素操做的方法,而後在傳入元素的時候進行判斷元素是否可見,若是不可見就報錯,這樣就省去了咱們不少時間,固然這裏是安靜經常使用的方法判斷,你們有好的方法也能夠留言一塊兒交流~~