一、Selenium中的WebDriver常用方法:
- get(url):get方式請求url
driver.get('http://www.baidu.com')
- back():瀏覽器后退操作
driver.back()
- forward():瀏覽器前進操作
driver.forward()
- save_screenshot(name):保存截圖
driver.save_screenshot('baidu.png')
- title():獲取title標簽,或者使用title屬性
driver.title()
- add_cookie(dict):添加cookie,傳入dict型別
driver.add_cookie({"":""})
get_cookies():獲取當前頁面的cookie
driver.get_cookies()
delete_cookie():洗掉cookie,
driver.delete_cookie({"":""})
delete_all_cookies():洗掉所有的cookie
driver.delete_all_cookies()
close():關閉頁面
driver.close()
quit():關閉瀏覽器
driver.quit()
maximize_window():最大化
driver.maximize_window()
minimize_window():最小化
driver.minimize_window()
獲取當前頁面url
driver.current_url
切換frame
driver.switch_to.frame(loc)
selenium get_attribute的幾種用法
1.獲取元素標簽的內容:
get_attribute(‘textContent’)
2.獲取元素內的全部HTML:
get_attribute(‘innerHTML’)
3.獲取包含選中元素的HTML:
get_attribute('outerHTML')
二、selenium八大元素定位方法
1.通過id查找對應的元素
driver.find_element_by_id(“id”) # id名稱
2.通過name查找對應的元素
driver.find_element_by_name(‘name’) # name屬性
3.通過標簽名查找對應元素
driver.find_element_by_tag_name(‘tag’) # tag:標簽名
4.通過xpath來查找對應的元素
driver.find_element_by_xpath(‘xpath’) # xpath: xpath匹配規則
5.通過class屬性查找對應的元素
driver.find_element_by_class_name(‘classname’) # classname:class的屬性名稱
6.通過css選擇器查找對應的元素
driver.find_element_by_css_selector(‘css’) # css選擇器
7.通過partial_link定位:
find_element_by_partial_link_text()
8.通過link定位:
find_element_by_link_text()
三、WebDriver的互動
點擊
driver.find_element_by_id("").click()
提交
driver.find_element_by_id("").submit()
鍵盤輸入
driver.find_element_by_id("").send_keys("")
四、selenium元素等待
1.什么是元素等待呢?
元素等待:js代碼執行渲染期間,導致資料/標簽加載緩慢,如果元素沒有加載完成,直接通過find_element去進行定位,會出現元素不存在的例外,
2.元素等待的三種方法
-
強制等待 sleep(秒)
如果使用sleep(10),表示讓程式在此等待10秒鐘,無論發生什么事,都會在10秒后再去執行后續的代碼 -
隱形等待 implicitly_wait(秒)
設定最長等待時間,在這個時間內只要有個時間點加載完成,則執行下一步代碼,比sleep 智能,能夠自主判斷, 但是,整個driver 的會話周期,設定一次即可,全域都可用, -
顯性等待 使用WebDriverWait 類和expected_conditions 模塊 明確等到某個條件滿足之后,再去執行下一步操作 程式每隔XX秒看一眼,如果條件成立了,則執行下一步,否則繼續等待,知道超過設定的最長時間,然后拋出TimeoutException
WebDriverWait 類:顯性等待類 WebDriverWait (drvier,等待時長,輪循周期).until/until_not(判斷條件) 判斷條件如等待頁面某個元素課件,等待新的視窗出現,等待元素包含某個文本內容 ,使用時需要匯入相關庫:
from selenium.webdriver.support.wait import WebDriverWait
expected_conditions 模塊,提供了一系列期望發生的條件使用步驟如下:使用時需要匯入相關庫:
from selenium.webdriver.support import expected_conditions
等待元素可以被點擊:
wait = WebDriverWait(self.driver, timeout, poll_frequency)
wait.until(expected_conditions.element_to_be_clickable(locator))
定義函式實體:
def wait_element_clickable(self, locator, timeout=30, poll_frequency=0.2):
wait = WebDriverWait(self.driver, timeout, poll_frequency)
try:
e = wait.until(expected_conditions.element_to_be_clickable(locator))
except Exception as err:
logging.error(f"元素定位失敗:{err}")
else:
return e
等待元素可見
wait = WebDriverWait(self.driver, timeout, poll_frequency)
wait.until(expected_conditions.visibility_of_element_located(locator))
定義函式實體:
def wait_element_visible(self, locator, timeout=20, poll_frequency=0.2):
wait = WebDriverWait(self.driver, timeout, poll_frequency)
try:
e = wait.until(expected_conditions.visibility_of_element_located(locator))
return e
except Exception as err:
logging.error(f"元素定位失敗:{err}")
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/344203.html
標籤:其他
