首页 > 技术文章 > 【Selenium4】操作测试对象

june2014 2014-04-07 18:42 原文

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()

推荐阅读