輕鬆自動化---selenium-webdriver(python) (八)

本文轉載自:https://www.cnblogs.com/fnng/p/3230768.html 作者:fnng 轉載請註明該聲明。

http://www.testclass.net/  測試教程網,專業的selenium 學習網站。

本節重點:

調用js方法

  • execute_script(script, *args)

在當前窗口/框架 同步執行javaScript

腳本:JavaScript的執行。

*參數:適用任何JavaScript腳本。

使用:

driver.execute_script‘document.title’)

 

 

使快播登陸用戶名輸入框標紅顯示

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

driver
= webdriver.Firefox()
driver.get(
"http://passport.kuaibo.com/login/?referrer=http%3A%2F%2Fvod.kuaibo.com%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\")

元素qid user_name

q.style.border=\"1px solid red\

元素q的樣式,邊框爲1個像素紅色

 

 

隱藏元素

js.html

<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<title>js</title>
<script type="text/javascript" async="" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<link href="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css" rel="stylesheet" />
<script type="text/javascript">
$(document).ready(
function(){
$(
'#tooltip').tooltip({"placement": "right"});
});
</script>
</head>

<body>
<h3>js</h3>
<div class="row-fluid">
<div class="span6 well">
<a id="tooltip" href="#" data-toggle="tooltip" title=" selenium-webdriver(python)">hover to see tooltip</a>
<a class="btn">Button</a>
</div>
</div>
</body>
<script src="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/js/bootstrap.min.js"></script>
</html>

(保持html文件與執行腳本在同一目錄下)

 

執行js一般有兩種場景:

  • 一種是在頁面上直接執行JS
  • 另一種是在某個已經定位的元素上執行JS

 

#coding=utf-8
from selenium import webdriver
import time,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自動化離不開前端技術。

 

 

--------------------------

學習更多selenium 內容:

 「功能測試自動化」彙總

 

發佈了0 篇原創文章 · 獲贊 104 · 訪問量 63萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章