web自動化中經常遇到頁面元素沒有在視圖范圍內,需要通過滾動條才能讓其出現。前面介紹了JS的方法,可以直接跳轉到對應的元素上,今天安靜在介紹webdriver中自帶的方法
location_once_scrolled_into_view
location_once_scrolled_into_view表示查看頁面上是否存在該元素,如果存在就會使元素滾動到視圖中
源碼:
@property def location_once_scrolled_into_view(self): """此屬性可能在沒有警告的情況下發生更改。用這個來發現 元素在屏幕上的位置,這樣我們就可以點擊它。這個方法 應該使元素滾動到視圖中。 返回屏幕上左上角的位置,或' ' None ' '如果 該元素不可見。 """ if self._w3c: old_loc = self._execute(Command.W3C_EXECUTE_SCRIPT, { 'script': "arguments[0].scrollIntoView(true); return arguments[0].getBoundingClientRect()", 'args': [self]})['value'] return {"x": round(old_loc['x']), "y": round(old_loc['y'])} else: return self._execute(Command.GET_ELEMENT_LOCATION_ONCE_SCROLLED_INTO_VIEW)['value']
這樣一看,其實和我們JS的方法一樣,都是將我們的元素視圖展示出來
代碼操作
安靜拿百度搜索,然后將下一頁的展示出來
from selenium import webdriver import time driver = webdriver.Chrome() driver.get('https://www.baidu.com/') driver.find_element_by_id('kw').send_keys('測試安靜') driver.find_element_by_id('su').click() time.sleep(4) driver.find_element_by_xpath('//*[@class="n"]').location_once_scrolled_into_view
通過動圖可以看出來,下一頁的元素已經展示在我們的頁面上了。滾動條還沒有到最底部。
這一張沒有很多的知識點,只是為了介紹一種如何快速跳轉到指定元素並將其視圖展示出來。小伙伴們趕快動手操作下吧