弹出框处理

1 python与selenium的API交互

1.1 alert

selenium的API提供了对alert弹出框的处理方式,可以对alert弹出框来进行处理的,如弹出框,我们获取弹出框的Text,或者接受弹出框,或者是取消(关闭)弹出框,下面分别是alert,Confirmation,Prompt进行一一的说明。selenium操作alert需要导入alert的发类,具体为:fromselenium.webdriver.common.alert import Alert alert类的属性汇总如下:


方法


描述


Example


text


获取弹出框的文本


alert.text


accept


接收javascript警告框


alert.accept()


dismiss


拒绝javascript警告框


alert.dismiss()


Send_keys(value)


模拟输入


alert.send_keys(value)

text

text是获取alert弹出框的文本,在百度搜索设置中,设置成功后,点击"搜索设置",弹出alert框,alert框文本显示为:“已经记录下您的使用偏好”,见效果图:

我们通过如下的代码,获取该alert弹出框的text,见如下的代码:

#coding:utf-8

fromselenium import webdriver

fromselenium.webdriver.common.by import By

fromselenium.webdriver.common.action_chains import ActionChains

fromselenium.common.exceptions import NoSuchElementException,UnexpectedTagNameException

fromselenium.webdriver.support.ui import Select

fromselenium.webdriver.common.alert import Alert

fromtime import sleep

driver=webdriver.Firefox()

driver.maximize_window()

driver.implicitly_wait(30)

driver.get(‘http://www.baidu.com‘)

sleep(2)

driver.find_element_by_link_text(u‘设置‘).click()

driver.find_element_by_xpath(".//*[@id=‘wrapper‘]/div[5]/a[1]").click()

select=Select(driver.find_element_by_name(‘NR‘))

select.select_by_value(u‘50‘)

driver.find_element_by_xpath(".//*[@id=‘gxszButton‘]/a[1]").click()

#获取弹出alert框的text

printdriver.switch_to_alert().text

driver.quit()

accept()

accept表示接受javascript的警告框,一个 alert弹出框弹出后,用户可以选择接受或者拒绝,我们任然已百度搜索为案例,实现对搜索设置的接收,见实现的代码:

#coding:utf-8

fromselenium import webdriver

fromselenium.webdriver.common.by import By

fromselenium.webdriver.common.action_chains import ActionChains

fromselenium.common.exceptions import NoSuchElementException,UnexpectedTagNameException

fromselenium.webdriver.support.ui import Select

fromselenium.webdriver.common.alert import Alert

fromtime import sleep

driver=webdriver.Firefox()

driver.maximize_window()

driver.implicitly_wait(30)

driver.get(‘http://www.baidu.com‘)

sleep(2)

driver.find_element_by_link_text(u‘设置‘).click()

driver.find_element_by_xpath(".//*[@id=‘wrapper‘]/div[5]/a[1]").click()

select=Select(driver.find_element_by_name(‘NR‘))

select.select_by_value(u‘50‘)

driver.find_element_by_xpath(".//*[@id=‘gxszButton‘]/a[1]").click()

#接受

printdriver.switch_to_alert().accept()

#验证是否已接受alert

sleep(3)

driver.find_element_by_link_text(u‘设置‘).click()

driver.find_element_by_xpath(".//*[@id=‘wrapper‘]/div[5]/a[1]").click()

assert driver.find_element_by_name(‘NR‘).get_attribute(‘value‘) in ‘50‘

driver.quit()

dismiss()

dismiss表示取消javascript的警告框,即拒绝,我们任然已百度搜索设置为案例,来说明dismiss的使用方法,见实现的代码:

#coding:utf-8

fromselenium import webdriver

fromselenium.webdriver.common.by import By

fromselenium.webdriver.common.action_chains import ActionChains

fromselenium.common.exceptions import NoSuchElementException,UnexpectedTagNameException

fromselenium.webdriver.support.ui import Select

fromselenium.webdriver.common.alert import Alert

fromtime import sleep

driver=webdriver.Firefox()

driver.maximize_window()

driver.implicitly_wait(30)

driver.get(‘http://www.baidu.com‘)

sleep(2)

driver.find_element_by_link_text(u‘设置‘).click()

driver.find_element_by_xpath(".//*[@id=‘wrapper‘]/div[5]/a[1]").click()

select=Select(driver.find_element_by_name(‘NR‘))

select.select_by_value(u‘20‘)

driver.find_element_by_xpath(".//*[@id=‘gxszButton‘]/a[1]").click()

#拒绝alert框

printdriver.switch_to_alert().dismiss()

driver.quit()

4.1.1 alert

alert是一种警告框,自动化的测试中,对alert的,一般会获取alert的文本,或者是接受 alert警告框,或者是拒绝警告框。如下是些的一个测试的alert的源码,见源码:

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

<script>

alert("这是一个测试alert的数据")

</script>

</head>

<body>

</body>

</html>

效果图为:

我们获取alert的text,并且接受alert的警告框,实现这样的一个过程的测试脚本为:

#coding:utf-8

from selenium import webdriver

from selenium.webdriver.common.by import By

from selenium.webdriver.common.action_chainsimport ActionChains

from selenium.common.exceptions importNoSuchElementException, UnexpectedTagNameException

from selenium.webdriver.support.uiimport Select

from selenium.webdriver.common.alert importAlert

from time import sleep

driver=webdriver.Firefox()

driver.maximize_window()

driver.implicitly_wait(30)

driver.get(‘file:///C:/Users/liwangping/Desktop/demo.html‘)

#输出alert的text

print driver.switch_to_alert().text

driver.switch_to_alert().accept()

driver.quit()

4.1.2Confirmmation

conirmation是确认的对话框,用户可以点击确定或者取消,如下是编写的见html的代码:

<html>

<head>

<meta charset="UTF-8">

<title></title>

<script type="text/javascript">

function disp_confirm()

{

varr=confirm("Press a button")

if(r==true)

{

document.write("You pressed OK!")

}

else

{

document.write("You pressed Cancel!")

}

}

</script>

</head>

<body>

<input type="button"onclick="disp_confirm()"

value="请点击" />

</body>

</html>

效果图是:

我们实现点击“请点击”,然后点击“确定”的按钮,实现这样的一个过程的自动化的测试脚本为:

#coding:utf-8

from selenium import webdriver

from selenium.webdriver.common.by import By

fromselenium.webdriver.common.action_chains import ActionChains

from selenium.common.exceptions importNoSuchElementException, UnexpectedTagNameException

from selenium.webdriver.support.uiimport Select

from selenium.webdriver.common.alert importAlert

from time import sleep

driver=webdriver.Firefox()

driver.maximize_window()

driver.implicitly_wait(30)

driver.get(‘file:///C:/Users/liwangping/Desktop/demo.html‘)

#点击“请点击”

driver.find_element_by_xpath("html/body/input").click()

#点击确定按钮

driver.switch_to_alert().accept()

sleep(6)

driver.quit()

4.1.3Prompt

prompt是javascript中的一个方法,prompt() 方法是用于可提示用户输入的对话框,如下代码是一个实例,见具体的代码:

<html>

<head>

<meta charset="UTF-8">

<title></title>

<scripttype="text/javascript">

functiondisp_prompt(){

var name=prompt("Please enter yourname","")

if (name!=null &&name!=""){

document.write("Hello " +name + "!")

}

}

</script>

</head>

<body>

<inputtype="button" onclick="disp_prompt()"

value="请点击"/>

</body>

</html>

案例是点击按钮,弹出输入框,输入内容,然后会显示:hello输入的内容,见效果图;


点击确定后,见显示的效果图:

实现这样的一个过程的自动化测试脚本如下:

#coding:utf-8

fromselenium import webdriver

fromselenium.webdriver.common.by import By

fromselenium.webdriver.common.action_chains import ActionChains

fromselenium.common.exceptions import NoSuchElementException,UnexpectedTagNameException

fromselenium.webdriver.support.ui import Select

fromselenium.webdriver.common.alert import Alert

fromtime import sleep

driver=webdriver.Firefox()

driver.maximize_window()

driver.implicitly_wait(30)

driver.get(‘file:///C:/Users/liwangping/Desktop/demo.html‘)

#点击“请点击”

driver.find_element_by_xpath("html/body/input").click()

#输入内容

driver.switch_to_alert().send_keys(‘webdriver‘)

driver.switch_to_alert().accept()

driver.quit()

4.2 Select类

选择类是一类特殊的selenium,主要使用场景在下拉菜单或者列表中,它提供了各种方法和属性的用户交互。操作select我们需要陪导入select类:from selenium.webdriver.support.ui import Select 选择类的属性和方法汇总如下:


方法


描述


Example


all_selected_options


得到列表的所有选择项


element.all_selected_options


first_selected_option


得到第一个选择项


element.first_selected_option


options


得到了所有选项的列表


element.options


deselect_all()


清楚所有从一个下拉框


element.deselect_all()


deselect_by_index(index)


取消选择在给定的下拉框的选项


element. deselect_by_index(1)


deselect_by_value(value)


匹配下拉框中的值


element. deselect_by_value(value)


deselected_by_visible_text(text)


显示文本的选项匹配参数下拉


element. deselected_by_visible_text(text)


select_by_index(index)


选择给定索引的下拉框


element.select_by_index(1)


select_by_value(value)


选择下拉框匹配的value


element.select_by_value(value)


select_by_visible_text(text)


选择文本匹配的下拉框


element.select_by_visible_text(text)

测试案例的html代码见如下:

<html>

<head>

<meta charset="UTF-8">

<title></title>

</head>

<body>

<selectid="selectMethod"onchange="updateShipping(options[selectedIndex]);"name="selectMethod">

<optionvalue="c">C语言</option>

<optionvalue="c++">C++语言</option>

<optionvalue="java">java语言</option>

<optionvalue="c#">C#语言</option>

<optionvalue="python">python语言</option>

<optionvalue="ruby">ruby语言</option>

<optionvalue="html">html脚本</option>

</select>

</body>

</html>

该html执行后的效果为:

all_selected_options

all_selected_options是得到列表的所有选择项,具体案例代码见如下:

#!coding:utf-8

fromselenium import webdriver

fromselenium.webdriver.common.by import By

fromselenium.webdriver.common.action_chains import ActionChains

fromselenium.common.exceptions import NoSuchElementException,UnexpectedTagNameException

fromselenium.webdriver.support.ui import Select

fromtime import sleep

driver=webdriver.Firefox()

driver.maximize_window()

driver.implicitly_wait(30)

driver.get(‘file:///C:/Users/liwangping/Desktop/demo.html‘)

select=Select(driver.find_element_by_id(‘selectMethod‘))

printselect.all_selected_options

driver.quit()

first_selected_option

first_selected_option是得到下拉框的第一个选项,案例中的下拉框第一个选项是C语言,实现过程见如下的代码:

#coding:utf-8

fromselenium import webdriver

fromselenium.webdriver.common.by import By

fromselenium.webdriver.common.action_chains import ActionChains

fromselenium.common.exceptions import NoSuchElementException,UnexpectedTagNameException

fromselenium.webdriver.support.ui import Select

fromtime import sleep

driver=webdriver.Firefox()

driver.maximize_window()

driver.implicitly_wait(30)

driver.get(‘file:///C:/Users/liwangping/Desktop/demo.html‘)

select=Select(driver.find_element_by_id(‘selectMethod‘))

print select.first_selected_option

driver.quit()

select_by_index(index)

select_by_index(index)是获取下拉框的对应的索引文件,如获取java语言,对应的索引为2,切记索引从0开始,实现的过程见如下的代码:

#coding:utf-8

fromselenium import webdriver

fromselenium.webdriver.common.by import By

fromselenium.webdriver.common.action_chains import ActionChains

fromselenium.common.exceptions import NoSuchElementException,UnexpectedTagNameException

fromselenium.webdriver.support.ui import Select

fromtime import sleep

driver=webdriver.Firefox()

driver.maximize_window()

driver.implicitly_wait(30)

driver.get(‘file:///C:/Users/liwangping/Desktop/demo.html‘)

select=Select(driver.find_element_by_id(‘selectMethod‘))

select.select_by_index(2)

sleep(3)

driver.quit()

select_by_value(value)

select_by_value(value)是获取下拉框中匹配的value值,如下拉框想选择"python语言",对应的value="python",下拉框的效果图为:

实现代码见如下:

#coding:utf-8

fromselenium import webdriver

fromselenium.webdriver.common.by import By

fromselenium.webdriver.common.action_chains import ActionChains

fromselenium.common.exceptions import NoSuchElementException,UnexpectedTagNameException

fromselenium.webdriver.support.ui import Select

fromtime import sleep

driver=webdriver.Firefox()

driver.maximize_window()

driver.implicitly_wait(30)

driver.get(‘file:///C:/Users/liwangping/Desktop/demo.html‘)

select=Select(driver.find_element_by_id(‘selectMethod‘))

select.select_by_value(‘python‘)

sleep(3)

driver.quit()

select_by_visible_text(text)

select_by_visible_text(text)在选择下拉框中,是依据text来匹配的,如想选择"python语言"一项,对应的text="python语言",实现该功能的代码见如下:

#coding:utf-8

fromselenium import webdriver

fromselenium.webdriver.common.by import By

fromselenium.webdriver.common.action_chains import ActionChains

fromselenium.c

时间: 2024-08-03 02:59:39

弹出框处理的相关文章

安卓中的弹出框

AlertDialog.Builder builder = new Builder(Context context) 得到一个context所在页面的弹出框, 可以是单选 builder.setSingleChoiceItems(items, checkedItem,listener)  items为弹出框的条目,checkedItem为默认选择的条目(一个),listener为弹出框的点击事件监听器(DialogInterface.OnClickListener的类型,是内部类), 也可以是多

Bootstrap方法为页面添加一个弹出框

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Bootstrap 实例 - 弹出框(Popover)插件</title> <link rel="stylesheet" href="https://cdn.static.runoob.com/libs/bootstrap/3.3.7/css/bootstrap

popover弹出框

<style> #view{width: 300px;height: 200px;border: 1px solid red;} </style> 以上是为了viewport更容易看出来设置的样式 <body style="margin: 50px;"> <div id="view"> <button class="btn btn-danger btn-lg" data-toogle=&quo

js 常见弹出框学习

模拟系统的弹出框 系统自带的弹出框 总结 链接  http://blog.csdn.net/anhuidelinger/article/details/17024491 参考这个网站学习模态框的动态弹出   http://tympanus.net/codrops/2013/06/25/nifty-modal-window-effects/,网站提供打包好的资源下载. html中的基本结构: <div class="md-modal md-effect-1" id="mo

UIAlertView弹出框

<Alert弹出框提示用户信息>    1.遵循代理方法<UIAlertViewDelete>    2.调用方法UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"恭喜通关!" message:@"更多精彩,请购买下一关~~" delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"购买&

UIActionSheet底部弹出框

<底部弹出框来提示用户信息>    1.遵循代理方法<UIActionSheetDelete>    2.调用放法 [UIActionSheet *sheet=[UIActionSheet alloc]initWithTitle:@“通关了!” delegate:self cancelButtonTitle:@“取消” destructiveButtonTitle:@“购买” otherButtonTitles:@“购买1”,@“购买2”,nil]    [sheet showIn

Bootstrap弹出框

弹出框3要素 modal-headermodal-bodymodal-footer <!--促发弹窗--> <a href="#" data-toggle="modal" data-target="#about">点我弹出</a> <!--弹窗代码--> <div class="modal fade" id="about"> <div cla

显示遮罩层和弹出框

因为最近用到了遮罩层和弹出框,上网查资料后自己完成了一个,在此做一下记录做保存. 因为用到了jq,所以需要引入jq文件,比如jquery-1.11.3.js 以下是jsp的代码: <body> <div> <input id="button" type="button" value="点击我"> <div class="shareDialog"> <div class=&q

UIAlertView - 弹出框

UIAlertView 继承于UIView 初始化方法:- (id)initWithTitle:(NSString *)title message:(NSString *)message delegate:(id /* <UIAlertViewDelegate>*/)delegate cancelButtonTitle:(NSString *)cancelButtonTitle otherButtonTitles:(NSString *)otherButtonTitles,...,nil;  

android 弹出框(输入框和选择框)

1.输入框: final EditText inputServer = new EditText(this); inputServer.setFilters(new InputFilter[]{new InputFilter.LengthFilter(50)}); AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("个性点的签名").setIcon(android.R.drawab