使用selenium操做ant design前端的頁面,感受頁面沒加載完

因須要收集頁面數據,遂準備使用selenium爬取瓦斯閱讀頁面,html

瓦斯網站使用的是ant design,元素定位很是困難,頁面元素都沒有ID,如今還只是能作到操做登陸,不能自動打開訂閱,查詢某公衆號,git

下面的代碼能實現打開登陸窗,自動填寫用戶名密碼登陸,其中那個登陸按鈕也是找不到元素的,使用的辦法是先獲取當前活動的元素,再經過發送TAB和ENTER鍵完成對「登陸」點擊操做的:github

 1 # 瓦斯的查詢url
 2 url = 'https://w.qnmlgb.tech'
 3 
 4 # 經過 get 方法打開查詢頁
 5 driver.get(url)
 6 
 7 # 登陸操做
 8 loginXpath = '//*[@id="root"]/div/div/div/div[1]/div/div[2]/span'
 9 loginPage = driver.find_element_by_xpath(loginXpath).click()
10 loginEmail = '//*[@id="username"]'
11 loginPwd = '//*[@id="password"]'
12 loginEmailInput = driver.find_element_by_xpath(loginEmail)
13 loginPwdInput = driver.find_element_by_xpath(loginPwd)
14 
15 loginEmailInput.send_keys('username')
16 loginPwdInput.send_keys('password')
17 WebDriverWait(driver, 30)
18 loginPwdInput.send_keys(Keys.TAB)
19 loginPwdInput.send_keys(Keys.ENTER)
20 WebDriverWait(driver, 30)
21 loginButtonXpath = '/html/body/div[3]/div/div/div/div[2]/div/div/div/form/div[3]/div/div/span/button'
22 loginButtonSelector = 'body > div:nth-child(9) > div > div > div > div.user-status-inner > div > div > div > form > div:nth-child(3) > div > div > span > button'
23 driver.switch_to.active_element.send_keys(Keys.TAB)
24 driver.switch_to.active_element.click()
25 WebDriverWait(driver, 30)
26 #driver.save_screenshot('searchtab.png')


最終實現效果是這樣的:chrome

而真實的頁面應該是這樣的:瀏覽器

是的,右邊那一塊在無頭瀏覽器狀態下貌似沒法加載,至少我還沒找到好的辦法,而用普通模式,則會報錯,網站

selenium.common.exceptions.ElementNotVisibleException: Message: element not interactableui

其中頁面焦點元素獲取的方法能夠參考這裏:https://huilansame.github.io/huilansame.github.io/archivers/switch-to-active-elementurl

若有好的辦法歡迎留言討論,謝謝,spa

 

 

--------------------------更新2019-1-31 15:20:22-----------------------------------code

終於解決了前面提到的感受頁面沒加載完的問題,

chromedriver打開頁面時默認的分辨率爲「{'width': 800, 'height': 600}」,有些頁面可能由於元素定位設置不是相對自適應的,此時這個分辨率就不足以顯示所有頁面,因此經過設置分辨率來顯示所有內容,

# 瀏覽器最大化
driver.maximize_window()
# 設置分辨率
driver.set_window_size(1280,800)

這樣所有頁面就能夠顯示出來了,底部的元素能夠經過定位滾動條使目標元素位於中央,

相關文章
相關標籤/搜索