失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 实用selenium+python实现web自动化测试第八节

实用selenium+python实现web自动化测试第八节

时间:2024-02-03 05:30:37

相关推荐

实用selenium+python实现web自动化测试第八节

本节重点:

调用js方法

·execute_script(script,*args)

在当前窗口/框架同步执行javaScript

脚本:JavaScript的执行。

*参数:适用任何JavaScript脚本。

使用:

driver.execute_script(‘document.title’)

使快播登陆用户名输入框标红显示:

#coding=utf-8

fromseleniumimportwebdriver

importtime

driver = webdriver.Firefox()

driver.get("/login/?referrer=http%3A%2F%%2F%3Ft%3Dhome")

#给用户名的输入框标红

js="var q=document.getElementById(\"user_name\");q.style.border=\"1px solid red\";"

#调用js

driver.execute_script(js)

time.sleep(3)

driver.find_element_by_id("user_name").send_keys("username")

driver.find_element_by_id("user_pwd").send_keys("password")

driver.find_element_by_id("dl_an_submit").click()

time.sleep(3)

driver.quit()

js解释:

q=document.getElementById(\"user_name\")

元素q的id为user_name

q.style.border=\"1pxsolidred\

元素q的样式,边框为1个像素红色

隐藏元素

js.html

<html>

<head>

<metahttp-equiv="content-type"content="text/html;charset=utf-8"/>

<title>js</title>

<scripttype="text/javascript"async=""src="/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

<linkhref="/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css"rel="stylesheet"/>

<scripttype="text/javascript">

$(document).ready(function(){

$('#tooltip').tooltip({"placement": "right"});

});

</script>

</head>

<body>

<h3>js</h3>

<divclass="row-fluid">

<divclass="span6 well">

<aid="tooltip"href="#"data-toggle="tooltip"title=" selenium-webdriver(python)">hover to see tooltip</a>

<aclass="btn">Button</a>

</div>

</div>

</body>

<scriptsrc="/twitter-bootstrap/2.3.2/js/bootstrap.min.js"></script>

</html>

(保持html文件与执行脚本在同一目录下)

执行js一般有两种场景:

·一种是在页面上直接执行JS

·另一种是在某个已经定位的元素上执行JS

#coding=utf-8

fromseleniumimportwebdriver

importtime,os

driver = webdriver.Firefox()

file_path = 'file:///'+ os.path.abspath('js.html')

driver.get(file_path)

#######通过JS 隐藏选中的元素#########

#第一种方法:

driver.execute_script('$("#tooltip").fadeOut();')

time.sleep(5)

#第二种方法:

button = driver.find_element_by_class_name('btn')

driver.execute_script('$(arguments[0]).fadeOut()',button)

time.sleep(5)

driver.quit()

js解释:

arguments对象,它是调用对象的一个特殊属性,用来引用Arguments对象。Arugments对象就像数组。

fadeOut()方法使用淡出效果来隐藏被选元素,假如该元素是隐藏的。

PS:可以看到js可以做selenium做不到的事情,但是在什么样的自动化的时候才能(或必须)要js帮忙,我还没遇到过。不过js可以selenium完成更强大的功能,这是不容置疑的。

另外,之前没有学过JS,所以js代码很陌生。如果有时间的话也建议各位同学补充这方面的知识。UI自动化离不开前端技术。

本节重点:

·上传文件

文件上传操作也比较常见功能之一,上传功能没有用到新有方法或函数,关键是思路。

上传过程一般要打开一个本地窗口,从窗口选择本地文件添加。所以,一般会卡在如何操作本地窗口添加上传文件。

其实,在seleniumwebdriver没我们想的那么复杂;只要定位上传按钮,通send_keys添加本地文件路径就可以了。绝对路径和相对路径都可以,关键是上传的文件存在。下面通地例子演示。

upload_file.html

<html>

<head>

<metahttp-equiv="content-type"content="text/html;charset=utf-8"/>

<title>upload_file</title>

<scripttype="text/javascript"async=""

src="/ajax/libs/jquery/1.9.1/jquery.min.js

"></script>

<linkhref="/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css"rel="stylesheet"/>

<scripttype="text/javascript">

</script>

</head>

<body>

<divclass="row-fluid">

<divclass="span6 well">

<h3>upload_file</h3>

<inputtype="file"name="file"/>

</div>

</div>

</body>

<scriptsrc="/twitter-bootstrap/2.3.2/js/bootstrap.min.js"></script>

</html>

upload.py

#coding=utf-8

fromseleniumimportwebdriver

importos,time

driver = webdriver.Firefox()

#脚本要与upload_file.html同一目录

file_path = 'file:///'+ os.path.abspath('upload_file.html')

driver.get(file_path)

#定位上传按钮,添加本地文件

driver.find_element_by_name("file").send_keys('D:\\selenium_use_case\upload_file.txt')

time.sleep(2)

driver.quit()

其它有些应用不好找,所以就自己创建页面,这样虽然麻烦,但脚本代码突出重点。

这里找一139邮箱的实例,有帐号的同学可以测试一下~!

(登陆基础版的139邮箱,网盘模块上传文件。)

139upload.py

#coding=utf-8

fromseleniumimportwebdriver

importos,time

driver = webdriver.Firefox()

driver.get("http://m.")

driver.implicitly_wait(30)

#登陆

driver.find_element_by_id("ur").send_keys("手机号")

driver.find_element_by_id("pw").send_keys("密码")

driver.find_element_by_class_name("loading_btn").click()

time.sleep(3)

#进入139网盘模块

driver.find_element_by_xpath("/html/body/div[3]/a[9]/span[2]").click()

time.sleep(3)

#上传文件

driver.find_element_by_id("id_file").send_keys('D:\\selenium_use_case\upload_file.txt')

time.sleep(5)

driver.quit()

如果觉得《实用selenium+python实现web自动化测试第八节》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。