喵吉欧尼酱

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

一、元素的定位,webdriver 提供了一系列的对象定位方法,常用的有以下几种

· id
· name
· class name
· link text
 · partial link text
 · tag name
 · xpath
 · css selector
<<<<<<<<<<<<<input id="kw" class="s_ipt" type="text" maxlength="100" name="wd"
autocomplete="off">>>>>>>>>>>

#coding=utf-8
from selenium import webdriver
browser = webdriver.Firefox()
browser.get("http://www.baidu.com")
#########百度输入框的定位方式##########
#通过 id 方式定位
browser.find_element_by_id("kw").send_keys("selenium")
#通过 name 方式定位
browser.find_element_by_name("wd").send_keys("selenium")
#通过 tag name 方式定位
browser.find_element_by_tag_name("input").send_keys("selenium")
#通过 class name 方式定位
browser.find_element_by_class_name("s_ipt").send_keys("selenium")

#通过 CSS 方式定位
browser.find_element_by_css_selector("#kw").send_keys("selenium")
#通过 xphan 方式定位
browser.find_element_by_xpath("//input[@id='kw']").send_keys("selenium")
############################################
browser.find_element_by_id("su").click()
time.sleep(3)
browser.quit()

 

 

 

添加等待时间

 

import time
智能等待:通过添加 implicitly_wait() 方法就可以方便的实现智能等待;implicitly_wait(30)
的用法应该比 time.sleep() 更智能,后者只能选择一个固定的时间的等待,前者可以
在一个时间范围内智能的等待。

 

 

浏览器最大化

driver.maximize_window()

print "设置浏览器宽480、高800显示"
driver.set_window_size(480, 800

 

操作浏览器的前进、后退

browser.back()  后退

browser.forward() 前进

 

操作测试对象,webdriver 中比较常用的操作对象的方法有下面几个

 

click 点击对象
send_keys 在对象上模拟按键输入
clear 清除对象的内容,如果可以的话
submit 清除对象的内容,如果可以的话
text 用于获取元素的文本信息
===============================
from selenium import webdriver
import time
driver = webdriver.Firefox()
driver.get("http://www.baidu.com")
driver.find_element_by_id("kw").clear()
driver.find_element_by_id("kw").send_keys("selenium")
time.sleep(2)
#通过 submit() 来操作
driver.find_element_by_id("su").submit()
time.sleep(3)
driver.quit()

 

send_keys("xx") 用于在一个输入框里输入 xx 内容。
click() 用于点击一个按钮。
clear() 用于清除输入框的内容,比如百度输入框里默认有个“请输入关键
字”的信息,再比如我们的登陆框一般默认会有“账号”“密码”这样的默认信息。
clear 可以帮助我们清除这些信息。

 

 

submit  提交表单

 

我们把“百度一下”的操作从 click 换成 submit 可以达到相同的效果:

from selenium import webdriver
import time
driver = webdriver.Firefox()
driver.get("http://www.baidu.com")
driver.find_element_by_id("kw").send_keys("selenium")
time.sleep(2)
#通过 submit() 来操作
driver.find_element_by_id("su").submit()
time.sleep(3)
driver.quit()

=========================

 

text获取元素信息

text获取元素信息
#id = cp 元素的文本信息
data=driver.find_element_by_id("cp").text


get_attribute  获取属性值
select = driver.find_element_by_tag_name("select")
allOptions = select.find_elements_by_tag_name("option")
for option in allOptions:
print "Value is: " + option.get_attribute("value")
option.click()

 

键盘输入乱码事件

 

selenium2 python 在 send_keys()中输入中文一直报错,其实前面加个小 u 就解决了:
coding=utf-8
send_keys(u"输入中文")
需要注意的是 utf-8并不是万能的,我们需要保持脚本、浏览器、程序三者编码之
间的转换;如果 utf-8不能解决,可以尝试 GBK 或修改浏览器的默认编码。

 

from selenium import webdriver
from selenium.webdriver.common.keys import Keys #需要引入 keys 包
import os,time
driver = webdriver.Firefox()
driver.get("http://passport.kuaibo.com/login/?referrer=http%3A%2F%2Fwebcloud
.kuaibo.com%2F")
time.sleep(3)
driver.maximize_window() # 浏览器全屏显示
driver.find_element_by_id("user_name").clear()
driver.find_element_by_id("user_name").send_keys("fnngj")
#tab 的定位相相于清除了密码框的默认提示信息,等同上面的 clear()
driver.find_element_by_id("user_name").send_keys(Keys.TAB)
time.sleep(3)
driver.find_element_by_id("user_pwd").send_keys("123456")
#通过定位密码框,enter(回车)来代替登陆按钮
driver.find_element_by_id("user_pwd").send_keys(Keys.ENTER)
'''
#也可定位登陆按钮,通过 enter(回车)代替 click()
driver.find_element_by_id("login").send_keys(Keys.ENTER)
'''
time.sleep(3)
driver.quit()

 

要想调用键盘按键操作需要引入 keys 包:
from selenium.webdriver.common.keys import Keys
通过 send_keys()调用按键:
send_keys(Keys.TAB) # TAB
send_keys(Keys.ENTER) # 回车
注意:这个操作和页面元素的遍历顺序有关,假如当前定位在账号输入框,按键
盘的 tab 键后遍历的不是密码框,那就不法输入密码。 假如输入密码后,还有
需要填写验证码,那么回车也起不到登陆的效果。

 

鼠标事件 重点

ActionChains 类
context_click() 右击
double_click() 双击
drag_and_drop() 拖动
 1 from selenium import webdriver
 2 from selenium.webdriver.common.action_chains import ActionChains
 3 import time
 4 driver = webdriver.Firefox()
 5 driver.get("http://passport.kuaibo.com/login/?referrer=http%3A%2F%2Fwebcloud
 6 .kuaibo.com%2F")
 7 #登陆快播私有云
 8 driver.find_element_by_id("user_name").send_keys("username")
 9 driver.find_element_by_id("user_pwd").send_keys("123456")
10 driver.find_element_by_id("dl_an_submit").click()
11 time.sleep(3)
12 #定位到要右击的元素
13 qqq
14 =driver.find_element_by_xpath("/html/body/div/div[2]/div[2]/div/div[3]/table
15 /tbody/tr/td[2]")
16 #对定位到的元素执行鼠标右键操作
17 ActionChains(driver).context_click(qqq).perform()
18 #你也可以使用三行的写法,但我觉得上面两行写法更容易理解
19 chain = ActionChains(driver)
20 implement =
21 driver.find_element_by_xpath("/html/body/div/div[2]/div[2]/div/div[3]/table/
22 tbody/tr/td[2]")
23 chain.context_click(implement).perform()
24 '''
25 time.sleep(3) #休眠3秒
26 driver.close()

 

 

 

posted on 2017-08-23 12:00  喵吉欧尼酱  阅读(142)  评论(0)    收藏  举报