頁面結構
網易登入頁
登入成功后的頁面代碼
代碼
'''
#我們對網頁的操作沒有報錯不代表自動化沒有問題
#此時需要通過頁面返回的信息做一個判斷,來做人工的定位
'''
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
driver = webdriver.Chrome()
driver.get("https://www.126.com/")
time.sleep(4)
print('Before login............')
title = driver.title
print(title)
nowURL = driver.current_url
print(nowURL)
#這是為了先卻換到運行模塊,不然會定位不到元素
fname =driver.find_element(By.XPATH,'/html/body/div[2]/div[3]/div[1]/div/div[4]/div[1]/div[1]/iframe')
driver.switch_to.frame(fname)
#百度輸入框輸入內容
driver.find_element(By.XPATH,"//input[@name='email']").clear()
driver.find_element(By.XPATH,"//input[@name='email']").send_keys("username")
driver.find_element(By.NAME,"password").clear()
driver.find_element(By.NAME,"password").send_keys("password")
driver.find_element(By.ID,"dologin").click()
#driver.find_element(By.CSS_SELECTOR,"[data-loginname='loginEmail']")
time.sleep(5)
print('After login............')
title = driver.title
print(title)
nowURL = driver.current_url
print(nowURL)
#此種方法不能點出text
# user = driver.find_elements(By.ID,'spnUid')
#后面的這3種方法都可以 取登入頁面后用戶賬號信息來驗證自動化是否正常
# user =driver.find_element(By.XPATH,'//*[@id="spnUid"]').text
# user =driver.find_element(By.XPATH,'/html/body/header/div[1]/ul[1]/li[1]/a//*[@id="spnUid"]').text
user =driver.find_element(By.CSS_SELECTOR,"[id='spnUid']").text
print(user)
driver.quit()
異常
打印結果找不到text
解決辦法
通過瘋狂百度,嘗試了text,getAttribute通通失敗。一位熱心網友的回復救了我,他懷疑是元素定位不准確導致的。於是我只定位了第一個元素,.text獲取成功。
user =driver.find_element(By.XPATH,'/html/body/header/div[1]/ul[1]/li[1]/a//*[@id="spnUid"]').text
https://blog.csdn.net/weixin_42346330/article/details/87093937?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link&utm_relevant_index=1
https://blog.csdn.net/qq_35910317/article/details/121890542