Selenium 弹出框、页面跳转总结_dangliuzi(5篇)

时间:2019-05-15 11:04:58下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《Selenium 弹出框、页面跳转总结_dangliuzi》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《Selenium 弹出框、页面跳转总结_dangliuzi》。

第一篇:Selenium 弹出框、页面跳转总结_dangliuzi

在eclipse中运行!验证处理过程。

Selenium 弹出框、页面跳转、遍历相同控件、执行js

1、对话框处理

Alert alert = driver.switchTo().alert();alert.accept();//确定 alert.dismiss();//取消

alert.getText();//取到文本内容

实际系统中,弹出窗口必定是某些操作完成、信息加载之后用做提示,因此弹出窗口有时出现得快,有时出现得慢,直接使用driver.switchTo().alert();很容易出现执行失败的情况。

咱们先判断是否出现了弹出框,封装成以下方法: protected boolean alertExists(int seconds){ long start = System.currentTimeMillis();while((System.currentTimeMillis()-start)< seconds * 1000){ try { driver.switchTo().alert();return true;} catch(NoAlertPresentException ne){ System.out.println(“not find alert!”);} catch(Exception e){ throw new RuntimeException(e.getMessage());} } return false;}

2、页面跳转,弹出窗口 //得到当前窗口的句柄

String currentWindow = driver.getWindowHandle();//得到所有窗口的句柄

Set handles = driver.getWindowHandles();

Iterator it = handles.iterator();while(it.hasNext()){ if(currentWindow == it.next())continue;WebDriver window = driver.switchTo().window(it.next());//获得新窗口,新的webDriver实例。

System.out.println(“title,url = ”+window.getTitle()+“,”+window.getCurrentUrl());}

另外,还有的iframe 之间转换方法

driver.switchTo().defaultContent();切换到某个frame:

driver.switchTo().frame(“leftFrame”);从一个frame切换到另一个frame: driver.switchTo().frame(“mainFrame”);

切换到某个window:

driver.switchTo().window(“windowName”);

3、遍历控件

List elements= driver.findElements(By.linkText(“开始学习”));elements.get(1).click();findElements()方法返回所有相同的WebElement的List,咱们直接访问某一个元素,也可以遍历操作,,这种功能大家都不回拒绝

遍历

for(Iterator i = elements.iterator();i.hasNext();){ WebElement integerRef = i.next();}

4、执行JS

Web driver对Java Script的调用是通过JavascriptExecutor来实现的,例如: JavascriptExecutor js =(JavascriptExecutor)driver;

js.executeScript(“(function(){inventoryGridMgr.setTableFieldValue('”+ inventoryId + “','” + fieldName + “','”

+ value + “');})()”);

第二篇:Java Web 弹出框总结

Java Web 弹出框总结

在学习java web时想对于网页上的登录验证出错时采用弹窗的形式给于提示,于是走到下列大致7种方式的弹窗形式,有别于Alert弹窗,根据需求可以选择性使用

NO1.错误提示弹窗

JOptionPane.showMessageDialog(null, “alert”, “alert”, JOptionPane.ERROR_MESSAGE);

NO2.JOptionPane.showInternalMessageDialog(frame, “information”,“information”, JOptionPane.INFORMATION_MESSAGE);此处需要一个自定义的frame,不予演示

NO3.单选弹窗

JOptionPane.showConfirmDialog(null, “choose one”, “choose one”, JOptionPane.YES_NO_OPTION);

NO4.JOptionPane.showInternalConfirmDialog(frame,“please choose one”, “information”,JOptionPane.YES_NO_CANCEL_OPTION,JOptionPane.INFORMATION_MESSAGE);

此方法需要定义一个frame,此处不予演示

NO5.警告弹窗

Object[] options = { “OK”, “CANCEL” };

JOptionPane.showOptionDialog(null, “Click OK to continue”, “Warning”,JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, options, options[0]);

NO6.输入弹窗

@SuppressWarnings(“unused”)String inputValue = JOptionPane.showInputDialog(“Please input a value”);

NO7.下拉选择弹窗

Object[] possibleValues = { “First”, “Second”, “Third” };

@SuppressWarnings(“unused”)Object selectedValue = JOptionPane.showInputDialog(null, “Choose one”, “Input”,JOptionPane.INFORMATION_MESSAGE, null, possibleValues, possibleValues[0]);

第三篇:解决Selenium弹出新页面无法定位元素问题

解决Selenium弹出新页面无法定位元素问题

问题来源

一般来说,我们进行自动化登录,之后想直接进行对图书的续约操作,但是利用元素定位的方法,怎么都找不到元素,我一直以为是我的规则用的不对,导致元素找不到,其实,只是窗口句柄还停留在上一个页面而已!对于新弹出的页面还没有定位!!那怎么可能找得到在新页面的元素呢!这是新手(我)犯下最大的错误,只顾于对元素方法的定位,却没有意识到页面发生跳转后的handles的变化。

请看测试;#coding=utf-8

from selenium import webdriver import time

browser=webdriver.Firefox()

browser.get(“http:///body/div[3]/div[3]/div/div[3]/div[4]/h3/a”).click()#我这里修改了一下div[4],大哥的索引直接到有道翻译了,不利于下一步测试 time.sleep(1)

ok,这次能正常索引到值,但是!!我要说的是但是!!

这根本没有跳转页面!还是在同一个页面进行操作的!如果我把大哥的代码改成:

在我测试的时候,发生了奇怪的事情,同样的代码,有时候能跑有时候抛出错误,我已设定休眠时间,难道是我频繁访问导致百度封我?刚才上述的代码我都实际测试过的,但是现在又不能用了--wtf--,所以。我换了稳定的引擎,我采用bing搜索来试试,上面的全部作废,如果有人知道问题出在哪,请留言

7.19补充

应该是搜索引擎热点的问题,每次键入相同的值可能搜索结果首项会不一致的,百度可能更新热点比较快把,所以出现了我所谓不稳定的情况

正题测试

我和上述那位大哥不同的观点在于,他用的 sreach_window=browser.current_window_handle

方法并不能实现对新窗口句柄的捕捉,我以bing主页为测试页,重新构造了一下,#coding=utf-8 from selenium import webdriver import time

browser=webdriver.Firefox()browser.get(“http://cn.bing.com/”)keywords = 'MrLevo520 CSDN' send_keywords=keywords.decode('utf-8')#中英混输入可防止乱码

browser.find_element_by_id(“sb_form_q”).send_keys(send_keywords)

time.sleep(1)#----------操作一:进行对关键字MrLevo520 CSDN搜索----------------browser.find_element_by_id(“sb_form_go”).click()#执行此操作会进行搜索,但是没有弹出新窗口,所以句柄不用重定位 time.sleep(3)#----------操作二:对搜索页面“我的CSDN”进行点击操作--------------browser.find_element_by_xpath(“/html/body/div/ol/li/h2/a”).click()#进行当前页面点击第一项

#--------操作三:对新弹出的页面再点击“贡献的资源”选项-----sreach_window=browser.current_window_handle browser.find_element_by_xpath(“/html/body/div[3]/div[2]/div[2]/div/a[3]”).click()

time.sleep(5)

浏览器运行结果只到如图:

而且抛出错误:

selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: {“method”:“xpath”,“selector”:“/html/body/div[3]/div[2]/div[2]/div/a[3]”}

可见,此语句并没有实现句柄重定位的功能,然后我再试试下面的方法,所有语句不变,只改变获取当前句柄的语句,改成

browser.switch_to_window(browser.window_handles[1])

最后程序应该是这样:

#coding=utf-8 from selenium import webdriver import time

browser=webdriver.Firefox()browser.get(“http://cn.bing.com/”)keywords = 'MrLevo520 CSDN' send_keywords=keywords.decode('utf-8')#中英混输入可防止乱码

browser.find_element_by_id(“sb_form_q”).send_keys(send_keywords)time.sleep(1)#----------操作一:进行对关键字MrLevo520 CSDN搜索----------------browser.find_element_by_id(“sb_form_go”).click()#执行此操作会进行搜索,但是没有弹出新窗口,所以句柄不用重定位 time.sleep(3)#----------操作二:对搜索页面“我的CSDN”进行点击操作--------------browser.find_element_by_xpath(“/html/body/div/ol/li/h2/a”).click()#进行当前页面点击第一项

#--------操作三:对新弹出的页面再点击“贡献的资源”选项-----browser.switch_to_window(browser.window_handles[1])browser.find_element_by_xpath(“/html/body/div[3]/div[2]/div[2]/div/a[3]”).click()

time.sleep(5)

最后结果,按照我的思路,进行了相应的点击,最后如图

所以从上述的例子上来说,语句sreach_window=browser.current_window_handle并没有实现重定位,可能我才疏学浅,但至少,在上述的那位大哥的博客中,写的是错误的,运行失败,我对2016.7.16的所有数据负责,实际测试失败。

7.17-补充:另一种获取句柄方法

还有另一种方法,就是直接定位当前最新弹出的窗口。代码是这样的 for handle in browser.window_handles:#方法二,始终获得当前最后的窗口,所以多要多次使用

browser.switch_to_window(handle)

那么结合到我的代码中那就是这样的:

#Author:哈士奇说喵

#因为搜索引擎检索项根据热度来排名,所以我只能对7.17的数据进行测试和负责,大家测试时候注意元素变化 #coding=utf-8 from selenium import webdriver import time

browser=webdriver.Firefox()browser.get(“http://cn.bing.com/”)keywords = 'MrLevo520 CSDN' send_keywords=keywords.decode('utf-8')#中英混输入可防止乱码

browser.find_element_by_id(“sb_form_q”).send_keys(send_keywords)

time.sleep(1)#----------操作一:进行对关键字MrLevo520 CSDN搜索----------------browser.find_element_by_id(“sb_form_go”).click()#执行此操作会进行搜索,但是没有弹出新窗口,所以句柄不用重定位 time.sleep(3)#----------操作二:对搜索页面第一项进行点击操作--------------browser.find_element_by_xpath(“/html/body/div/ol/li/h2/a”).click()#进行当前页面点击第一项

#--------操作三:对新弹出的页面再点击“我的头像”选项-----#注意此时已经是弹出的第一个窗口了,需要重新定位句柄

'''browser.switch_to_window(browser.window_handles[1])#方法一''' for handle in browser.window_handles:#方法二,始终获得当前最后的窗口 browser.switch_to_window(handle)

browser.find_element_by_xpath(“//div[@id='body']/div[2]/div/div/ul[2]/div/a”).click()

#------------------操作四:点击“贡献的资源”-------------------#注意此时已经是新弹出的第二个窗口了,需要重新定位句柄

browser.switch_to_window(browser.window_handles[2])#方法一,注意window_handles[2]变成了2 '''for handle in browser.window_handles:#方法二,始终获得当前最后的窗口 browser.switch_to_window(handle)'''

browser.find_element_by_xpath(“/html/body/div[3]/div[2]/div[2]/div/a[3]”).click()

time.sleep(5)

上面的代码,我要说几点,总共实现完成会存在三个浏览器窗口,也就是相当于实现了两次句柄重定位功能,也就是下面的图片,对bing搜索“MrLevo520 CSDN”跳出的最热项,也就是这一篇(感谢大家厚爱),但是昨天最热弹出来的是直接是我的主页,大家从上面的动图应该也可以看出来,所以等你测试这段代码的时候,可能最热项目又变化了,道理大家懂就ok,不影响重抓句柄代码。

代码实现了从1,到2,点击头像后,再跳转到3主页,之后再点击“贡献资源”,实现的动图如下:

Pay Attention

1.搜索引擎根据热度来排名,也就是代码具有“不稳定性”,应该根据自己实际情况,定位不同元素,我只对当前编辑时间的数据负责

2.在实际操作过程中,会产生第一个页面还没等第二个页面缓冲完,直接又“占领”主视觉的问题,别担心,句柄还是在传递的,程序一直在跑,而且没有出错,过一会时间就会更新加载页面的,如果想要关闭无关页面,请看这篇博客 基于Selenium一键写CSDN博客

3.可能我的代码第一次获取句柄和第二次获取句柄不一样的方法,这是为了展示,你可以两次句柄获取都用方法二,也可以都是用方法一,但是方法一注意修改标号。

方法一 VS 方法二

相比较于方法二,方法一的优点在于后续操作,比如关闭第几个窗口,句柄传递是按照顺序来的。缺点在于对于较多新页面,有时候弹出窗口太多会变得难以计算。

而方法二,一直在获取最后的窗口,如果你只是对最后的窗口进行操作,也就是(自己定义的)”前向“操作时,不计后果,可以直接拿来用,而且代码不变。缺点在于,如果要返回到某个窗口句柄,那就显得没有方法一来的好,至少我现在是这么认为的,可能以后我会回来修改。

总结

我姑且认为这句语句,单独作用于上述博客中是不可行的。

所以我在后续的博客中对窗口重定向语句改成了browser.switch_to_window(browser.window_handles[1]),至少在我的实验中,这句语句实现了我需要的操作。

最后上张动图表示流程:

最后

将待解决实际问题解决,方法总是好多种,就看自己想不想解决。

第四篇:asp.net 页面跳转 学习课件

页面跳转

public partial class Default2 : System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)

{

if(!IsPostBack)

{

bind();

}

}

protected void bind()

{

SqlConnection con = new

SqlConnection(ConfigurationManager.ConnectionStrings[“newsConnectionString”].ConnectionString);con.Open();

string sql = “select * from login where 编号='” + Request.QueryString[“编号”] + “'”;SqlDataAdapter sda = new SqlDataAdapter(sql, con);

DataSet ds = new DataSet();

sda.Fill(ds, “login”);

DataRowView drv = ds.Tables[“login”].DefaultView[0];

TextBox1.Text = Convert.ToString(drv.Row[“编号”]);

TextBox2.Text = Convert.ToString(drv.Row[“用户名”]);

TextBox3.Text = Convert.ToString(drv.Row[“密码”]);

TextBox4.Text = Convert.ToString(drv.Row[“年龄”]);

TextBox5.Text = Convert.ToString(drv.Row[“性别”]);

TextBox6.Text = Convert.ToString(drv.Row[“备注”]);

con.Close();

}

}

第五篇:JS分段获取URL解析和js跳转页面

js跳转页面方法

3布丁足迹;秒后自动跳转……

按钮式:

第五种:

=====javascript中弹出选择框跳转到其他页面=====

=====javascript中弹出提示框跳转到其他页面=====

JS分段获取URL解析

完整的URL由这几个部分构成:

scheme://host:port/path?query#fragment

scheme = 通信协议(常用的http,ftp,maito等)host = 主机(域名或IP)port = 端口号 path = 路径

query = 查询

可选,用于给动态网页(如使用CGI、ISAPI、PHP/JSP/ASP/ASP.NET等技术制作的网页)传递参数,可有多个参数,用”&”符号隔开,每个参数的名和值用”=”符号隔开。

fragment = 信息片断

字符串,用于指定网络资源中的片断。例如一个网页中有多个名词解释,可使用fragment直接定位到某一名词解释。(也称为锚点.)对于这样一个URL http://www.master8.net:80/seo/?ver=1.0&id=6#imhere

我们可以用javascript获得其中的各个部分 1, window.location.href

整个URl字符串(在浏览器中就是完整的地址栏)

2,window.location.protocol URL 的协议部分 本例返回值:http:

3,window.location.host URL 的主机部分

本例返回值:www.master8.net

4,window.location.port URL 的端口部分

如果采用默认的80端口(update:即使添加了:80),那么返回值并不是默认的80而是空字符 本例返回值:”"

5,window.location.pathname URL 的路径部分(就是文件地址)本例返回值:/seo/

6,window.location.search 查询(参数)部分

除了给动态语言赋值以外,我们同样可以给静态页面,并使用javascript来获得相信应的参数值 本例返回值:?ver=1.0&id=6

7,window.location.hash 锚点

本例返回值:#imhere

单位:广州本盈计算机科技有限公司

地址:广州市天河区棠东东路9号御富科贸园D座D217-218-219

职位:PHP程序员 联系人:罗狮龙

联系人电话:***

下载Selenium 弹出框、页面跳转总结_dangliuzi(5篇)word格式文档
下载Selenium 弹出框、页面跳转总结_dangliuzi(5篇).doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    用Js脚本实现页面跳转5则范文

    1. Javascript 返回上一页 history.go(-1), 返回两个页面: history.go(-2); 2. history.back. 3. window.history.forward返回下一页 4. window.history.go(返回第几......

    小程序的页面跳转以及参数传递

    第九程序小程序的页面跳转以及参数传递  页面跳转  参数传递 微信小程序的页面跳转,页面之间传递参数笔记 先上demo图: 为了简化逻辑,所以index.wxml里面只写了两个text.既然......

    跳转指令总结

    JE;等于则跳转 JNE;不等于则跳转JZ;为 0 则跳转 JNZ;不为 0 则跳转 JS;为负则跳转 JNS;不为负则跳转JC;进位则跳转 JNC;不进位则跳转JO;溢出则跳转 JNO;不溢出则跳转JA;无符......

    PPT导航菜单按钮跳转任意页面(范文大全)

    PPT导航菜单按钮跳转任意页面 PPT制作的演讲稿,由于内容比较多,又需要在几个页面之间跳转,那么如何在PPT中加入一些按钮实现这个功能呢?通常情况下只需要添加按顺序跳转的功能按......

    扣丁学堂简述mui几种页面跳转方式

    扣丁学堂简述mui几种页面跳转方式 现在想要学习HTML5开发技术的小伙伴仍然在不断的增加,所以现在不论是参加HTML5培训还是自学HTML5开发技术的人都在不断的增加,本篇文章小编......

    页面功能测试点总结

    页面功能测试点总结 本资料由织雀教育从网上整理,仅供学习交流,请务做商业用途 1. 页面链接检查:每一个链接是否都有对应的页面,并且页面之间切换正确。可以使用一些工具,如Link......

    宝贝页面装修总结

    宝贝页面装修总结1:店铺活动营造促销的氛围,渲染店铺特色,促销活动的通告或预告,新款上线的通告或预告,主推款式的海报,大促时可以考虑加入关联营。2:模特图+文案展示上身效果,激发......

    九种js弹出对话框的方法总结

    九种js弹出对话框的方法总结- 九种js弹出对话框的方法总结,需要的朋友可以参考一下 - 【1、最基本的js弹出对话框窗口代码】 这是最基本的js弹出对话框,其实代码就几句非常......