【Selenium4】操作测试对象
1、常用方法:点击对象、在对象上模拟按键输入、清除对象的内容、获取元素的文本、提交表单、获得属性值
coding=utf-8
from selenium import webdriver
import time
browser=webdriver.FireFox()
browser.get('http://www.baidu.com')
browser.find_element_by_id('kw').clear() #清除对象的内容
browser.find_element_by_id('kw').send_keys('selenium') #在对象上模拟按键输入
browser.find_element_by_id('su').click() #点击对象
browser.find_element_by_id('su').submit() #提交表单,与click()效果相同
data=browser.find_element_by_id('cp').text #获取对象的文本信息
print data #打印文本信息
time.sleep(2)
select=browser.find_element_by_tag_name('select')
allOptions=select.find_element_by_tag_name('option')
for option in allOptions:
print 'Value is: '+option.get_attribute('value')
option.click()
browser.quit()
2、键盘操作输入:键盘按键用法、键盘组合键用法、输入中文特殊处理
coding=utf-8
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
import os
browser=webdriver.FireFox()
browser.get('http://www.baidu.com')
time.sleep(2)
browser.maximize_window()
browser.find_element_by_id('user_name').clear()
browser.find_element_by_id('user_name').send_keys(Keys.TAB) #tab键作用等同于clear()
browser.find_element_by_id('user_name').send_keys('XXXXXX')
browser.find_element_by_id('user_pwd').send_keys('XXXXXX')
browser.find_element_by_id('user_pwd').send_keys('Keys.ENTER') #定位密码框,点击回车按钮
browser.find_element_by_id('login').send_keys('Keys.ENTER') #定位登陆按钮,点击回车按钮
time.sleep(2)
browser.quit()
3、多层框架或窗口的定位
frame.html 中嵌套inner.html,两个文件与脚本文件在相同目录下
coding=utf-8
from selenium import webdriver
import time
import os
browser=webdriver.FireFox()
file_path='file:///'+os.path.abspath('frame.html')
browser.get(file_path)
browser.implicitly_wait(30) #设置超时时长为30s,在此范围内智能等待
browser.switch_to_frame('f1') #先找到id='f1'的frame1
browser.switch_to_frame('f2') #再找到id='f2'的frame2
browser.find_element_by_id('kw').send_keys('selenium')
browser.find_element_by_id('su').click()
browser.switch_to_default_content() #直接跳出所有frame
time.sleep(2)
browser.quit()
4、执行js:execute_script(script,*args)在当前框架/窗口,同步执行js脚本。两种方式:在页面上同步执行js、在某个定位的元素上执行js
coding=utf-8
from selenium import webdriver
import time
import os
browser=webdriver.FireFox()
browser.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\';'
browser.execute_scrips(js)
time.sleep(2)
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)
browser.quit()
q=document.getElementById(\'user_name\') 元素q的id='user_name'
q.style.border='1px solid red' 元素q的样式:边框为红色1px
用到的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>
代码
coding=utf-8
from selenium import webdriver
import time
import os
browser=webdriver.FireFox()
file_path='file:///'+os.path.abspath('js.html')
browser.get(file_path)
browser.execute_script('$("#tooltip").fadeOut();') #在页面上同步执行js
button=browser.find_element_by_class_name('btn')
browser.execute_script('$(arguments[0]).fadeOut()',button)
time.sleep(2)
browser.quit()