java selenium智能等待页面加载完成示例代码_实用技巧

java selenium  智能等待页面加载完成

我们经常会碰到用selenium操作页面上某个元素的时候, 需要等待页面加载完成后, 才能操作。  否则页面上的元素不存在,会抛出异常。 

或者碰到AJAX异步加载,我们需要等待元素加载完成后, 才能操作

selenium 中提供了非常简单,智能的方法,来判断元素是否存在. 

阅读目录

  1. 实例要求
  2. 隐式等待
  3. 显式等待

实例要求

实例:set_timeout.html 下面的html 代码,  点击click 按钮5秒后, 页面上会出现一个红色的div快, 我们需要写一段自动化脚本智能的去判断这个div是否存在, 然后把这个div 然后高亮。

<html>
 <head>
  <title>Set Timeout</title>
  <style>
   .red_box {background-color: red; width = 20%; height: 100px; border: none;}
  </style>
  <script>
   function show_div(){
    setTimeout("create_div()", 5000);
   }

   function create_div(){
    d = document.createElement('div');
    d.className = "red_box";
    document.body.appendChild(d);
   }
  </script>
 </head>
 <body>
  <button id = "b" onclick = "show_div()">click</button>
 </body>
</html>

隐式等待

  WebDriver driver = new FirefoxDriver();
  driver.get("file:///C:/Users/Tank/Desktop/set_timeout.html"); 

  driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
  WebElement element = driver.findElement(By.cssSelector(".red_box"));
  ((JavascriptExecutor)driver).executeScript("arguments[0].style.border = \"5px solid yellow\"",element); 

其中

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

意思是, 总共等待10秒, 如果10秒后,元素还不存在,就会抛出异常  org.openqa.selenium.NoSuchElementException

显式等待

显式等待 使用ExpectedConditions类中自带方法, 可以进行显试等待的判断。

显式等待可以自定义等待的条件,用于更加复杂的页面等待条件


等待的条件


WebDriver方法


页面元素是否在页面上可用和可被单击


elementToBeClickable(By locator)


页面元素处于被选中状态


elementToBeSelected(WebElement element)


页面元素在页面中存在


presenceOfElementLocated(By locator)


在页面元素中是否包含特定的文本


textToBePresentInElement(By locator)


页面元素值


textToBePresentInElementValue(By locator, java.lang.String text)


标题 (title)


titleContains(java.lang.String title)

只有满足显式等待的条件满足,测试代码才会继续向后执行后续的测试逻辑

如果超过设定的最大显式等待时间阈值, 这测试程序会抛出异常。

public static void testWait2(WebDriver driver)
 {
  driver.get("E:\\StashFolder\\huoli_28@hotmail.com\\Stash\\Tank-MoneyProject\\浦东软件园培训中心\\我的教材\\Selenium Webdriver\\set_timeout.html"); 

  WebDriverWait wait = new WebDriverWait(driver, 20);
  wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector(".red_box")));
  WebElement element = driver.findElement(By.cssSelector(".red_box"));
  ((JavascriptExecutor)driver).executeScript("arguments[0].style.border = \"5px solid yellow\"",element);
 }

以上就是对Java selenium 等待页面加载的资料整理,后续继续补充相关资料,谢谢大家对本站的支持!

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索java
selenium页面加载
selenium等待页面加载、selenium等待元素加载、selenium 等待加载、selenium 参数化 示例、selenium 等待,以便于您获取更多的相关知识。

时间: 2024-08-01 11:24:48

java selenium智能等待页面加载完成示例代码_实用技巧的相关文章

asp.net上传execl文件后,在页面上加载显示(示例代码)_实用技巧

复制代码 代码如下:     #region 上传Execl文件    protected void Button1_Click(object sender, EventArgs e)    {        if (FileUpload1.HasFile)        {            string NewFileName = string.Empty;            string ErrorMess = UpLoadFile(FileUpload1, ".xls|.xlsx

asp.net点击 查看更多 实现无刷新加载的实现代码_实用技巧

页面页面的js代码如下, 复制代码 代码如下: <script type="text/javascript"> $(function () { function init(count, start) { $.ajax({ type: "GET", dataType: "json", url: "Handler/Handler.ashx", data: { action: "GetMoreNews"

Js获取asp页面返回的值(加载值)实现代码_应用技巧

复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv=&qu

asp.net动态加载自定义控件的方法_实用技巧

本文实例讲述了asp.net动态加载自定义控件的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: //usercontrol.IndexOper为自定义控件 usercontrol.IndexOper uc=(usercontrol.IndexOper)Page.LoadControl("自定义控件路径"); uc.ID = "uc";  //定义唯一标示 //OperContent为PlaceHolder控件 OperContent.Contr

ASP.net中保持页面中滚动条状态的代码_实用技巧

针对这个问题我在网上找了好多,发现答案比较乱.其实Asp.net中page对象就有一个属性可以使页面提交或者更新数据后,返回页面原来位置,包括滚动条位置都可以保存. 复制代码 代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" MaintainScrollPositionOnPostback="true" Inh

asp.net页面防止重复提交示例分享_实用技巧

先放javascript代码: 复制代码 代码如下: <script type="text/javascript">        var clicks = 0;        function checkclick(obj) {            clicks = clicks + 1;            if (clicks>1) {                alert("请勿重复点击!");                ret

asp.net c#采集需要登录页面的实现原理及代码_实用技巧

首先说明:代码片段是从网络获取,然后自己修改.我想好的东西应该拿来分享. 实现原理:当我们采集页面的时候,如果被采集的网站需要登录才能采集.不管是基于Cookie还是基于Session,我们都会首先发送一个Http请求头,这个Http请求头里面就包含了网站需要的Cookie信息.当网站接收到发送过来的Http请求头时,会从Http请求头获取相关的Cookie或者Session信息,然后由程序来处理,决定你是否有权限访问当前页面. 好了,原理搞清楚了,就好办了.我们所要做的仅仅是在采集的时候(或者

asp.net直接Response输出WML页面示例代码_实用技巧

复制代码 代码如下: protected void Page_Load(object sender, EventArgs e) { Response.ContentType = "text/vnd.wap.wml"; StringBuilder builder = new StringBuilder(); builder.AppendLine("<?xml version=\"1.0\" encoding=\"UTF-8\" ?&

js的压缩及jquery压缩探讨(提高页面加载性能/保护劳动成果)_javascript技巧

问题缘由:负责公司的开发平台研发工作,考虑的知识产权的保护工作,必须要考虑java的加密技术和js脚本的加密技术.在目前java加密很容易破解的情况下,还是先搞定js的加密和压缩,一方面可以提高页面加载性能,另外一方面也希望辛苦研发出来的成果得到一定的保护. 研究过程: 1.先强烈鄙视一下哪些随便转载文章的家伙,给我制造了很大的麻烦!!网上很多帖子都不靠谱.. 2.首先想了解jquery使用什么压缩的, 网上找了半天,说法不一样,后来还是在jquery官网的最频繁问题中找到了答案,但这已经是绕了