8、get 、 navigate().to和等待

一、get 和 navigate().to的区别

get系列方法每一个都是全新的操作,相当于自带了一个默认的刷新页面的功能。

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 = 循环查询的间隔时间,默认是1秒

  ignored_exceptions = 忽略异常,默认忽略NoSuchElementException

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容