弹出框处理
Posted cc344525813
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了弹出框处理相关的知识,希望对你有一定的参考价值。
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
以上是关于弹出框处理的主要内容,如果未能解决你的问题,请参考以下文章