一、get 和 navigate().to的區(qū)別
get系列方法每一個都是全新的操作玉掸,相當(dāng)于自帶了一個默認(rèn)的刷新頁面的功能刃麸。
navigate系列的方法是基于瀏覽器的歷史記錄在操作。
? driver.navigate().to("http://news.baidu.com/")
? navigate().refresh() # 刷新
? driver.navigate().forward();
? driver.navigate().back();
二司浪、顯性等待
1泊业、code
from selenium.webdriver.support.uiimport WebDriverWait
def document_initialised(driver):
? ? ? return driver.execute_script("return initialised")
# driver.navigate("file:///race_condition.html")
WebDriverWait(driver, timeout=3).until(document_initialised)
el = driver.find_element_by_tag_name("p")
assert el.text =="Hello from JavaScript!"
# el = WebDriverWait(driver).until(lambda d: d.find_element_by_tag_name("p"))
# assert el.text == "Hello from JavaScript!"
2、race_condition.html
<!doctype html>
<meta charset=utf-8>
<title>Race Condition Example</title>
<script>
? var initialised = false;
? window.addEventListener("load", function() {
? ? var newElement = document.createElement("p");
? ? newElement.textContent = "Hello from JavaScript!";
? ? document.body.appendChild(newElement);
? ? initialised = true;
? });
</script>
三啊易、隱式等待
driver.implicitly_wait(10)
driver.get("https://www.baidu.com/")
my_dynamic_element = driver.find_element_by_id("kw")
四吁伺、流暢等待
1、定義了等待條件的最大時間量租谈,以及檢查條件的頻率篮奄。
2、WebDriverWait(self割去,driver宦搬,timeout,poll_frequency=POLL_FREQUENCY劫拗,ignored_exceptions=None)
wait = WebDriverWait(driver, 10, poll_frequency=1, ignored_exceptions=[ElementNotVisibleException, ElementNotSelectableException])
driver = 瀏覽器打開實例
timeout = 超時的總時長
poll_frequency = 循環(huán)查詢的間隔時間,默認(rèn)是1秒
ignored_exceptions = 忽略異常矾克,默認(rèn)忽略NoSuchElementException