selenium系列-WebDriverAPI(2)

1.控制浏览器

控制浏览器窗口大小:driver.set_window_size(480,800)

后退:driver.back()

前进:driver.forward()

刷新:driver.refresh()

2.对元素操作

clear():                               清楚文本。

send_keys(*value):        模拟按键输入。

click():                               单击元素。

下面是以yjs账号登录DLMMCP系统,来演示这些方法的使用。

from selenium import webdriver

def market():
driver = webdriver.Firefox()
driver.get(“http://192.168.39.141:8080/dlmmcp/index.action”)
driver.find_element_by_id(“username”).clear()
driver.find_element_by_id(“username”).send_keys(“yjs”)
driver.find_element_by_id(“password”).clear()
driver.find_element_by_id(“password”).send_keys(“yjs12345678”)
driver.find_element_by_id(“enter”).click()

submit()   提交表单

size:          返回元素的尺寸。

text:          获取元素的文本。

get_attribute(name):       获得属性值。

is_displayed():                  设置该元素是否用户可见。

3.鼠标事件

ActionChains类提供了鼠标操作的常用方法:

perform():                       执行所有ActionChains中存储的行为;

context_click():             右击;

double_click():              双击;

drag_and_drop():        拖动;

move_to_element():    鼠标悬停。

4.键盘事件

from selenium.webdriver.common.keys import Keys

send_keys(Keys.BACK_SPACE)                删除键

send_keys(Keys.SPACE)                              空格键

send_keys(Keys.TAB)                                   制表键

send_keys(Keys.ESPACE)                            回退键

send_keys(Keys.ENTER)                              回车键

send_keys(Keys.CONTROL,’a’)                     全选

send_keys(Keys.CONTROL,’c’)                     复制

send_keys(Keys.CONTROL,’x’)                     剪切

send_keys(Keys.CONTROL,’v’)                     粘贴

send_keys(Keys.F1)                                      F1

5.设置元素等待

当今大多数Web应用程序使用AJAX技术。当浏览器在加载页面时,页面上的元素可能并不是同事被加载完成的,这给元素定位增加了困难。在做DLMMCP市场监测,价格查询时也遇到了同样的问题,解决办法是利用sleep方法,增加了sleep(2)语句,则不再有ElementNotVisibleException的情况出现。除了这种办法,还有其他两种方法,显示等待和隐式等待。

显示等待:WebDriverWait(driver,timeout,poll—frequency=0.5,ignored_exceptions=None)

隐式等待:driver.implicitly_wait(10)

6.定位一组元素

定位一组元素的方法与定位单个元素的方法相类似,唯一的区别在单次element后面多了一个s表示复数。

实例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#!/usr/bin/python
#coding:utf-8
#######################################################################################
操作:1.登录Dlmmcp系统;2.进入主要食用农副产品市场监测系统;3.点击价格查询分析-》商品价格分析-》汇总分析界面;4.查询2017年7月国光产品的最高批发价信息
#date:20170725
#version:V1.0
#author:ZLL
########################################################################################
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
'''登录,用户名yjs,密码yjs12345678'''
def login():
    driver = webdriver.Firefox()
    driver.get("http://192.168.39.141:8080/dlmmcp/index.action")
    driver.find_element_by_id("username").clear()
    driver.find_element_by_id("username").send_keys("yjs")
    driver.find_element_by_id("password").clear()
    driver.find_element_by_id("password").send_keys("yjs12345678")
    driver.find_element_by_id("enter").click()
    time.sleep(3)
    return driver
'''查询功能,此处有几个插件需要注意,一是选择时间的下拉框,另外一个是时间插件是一个iframe,选择好时间后要返回父级iframe,还要注意选择商品的部分需要加sleep才能定位到'''
def main(driver):
    driver.find_element_by_xpath("/html/body/div[1]/div[2]/div/div[1]/ul/li[1]/a/span").click()
    time.sleep(1)
    driver.find_element_by_xpath("/html/body/div[1]/div[2]/div/div[1]/ul/li[1]/ul/li[6]/a/span").click()
    driver.find_element_by_xpath("/html/body/div[1]/div[2]/div/div[1]/ul/li[1]/ul/li[6]/ul/li[1]/a/span").click()
    driver.find_element_by_xpath("/html/body/div[1]/div[2]/div/div[1]/ul/li[1]/ul/li[6]/ul/li[1]/ul/li[1]/a/span").click()
    driver.switch_to.frame("iframepage")
    time.sleep(2)
    time_setting=driver.find_element_by_id("dictDateType")
    time_setting.find_element_by_xpath("/html/body/div[3]/div/fieldset/div/table/tbody/tr[1]/td[1]/select/option[3]").click()
    driver.find_element_by_id("dictDateMon").click()
    xf=driver.find_element_by_xpath("/html/body/div[1]/iframe")
    driver.switch_to.frame(xf) #此处不是id可以不添加双引号
    driver.find_element_by_id("dpTodayInput").click()
    driver.switch_to.parent_frame()
    driver.find_element_by_xpath("/html/body/div[3]/div/fieldset/div/table/tbody/tr[2]/td[1]/a[2]").click()
    driver.find_element_by_xpath("/html/body/div[6]/div[2]/div/div/fieldset/div/table/tbody/tr[2]/td[2]/input").send_keys("国光")
    time.sleep(2)
    driver.find_element_by_xpath("/html/body/div[6]/div[2]/div/div/fieldset/div/table/tbody/tr[2]/td[3]/a[1]").click()
    time.sleep(3)  
    driver.find_element_by_xpath("/html/body/div[6]/div[2]/div/div/div/div/div/div[2]/div[2]/table/tbody/tr[2]/td/div/table/tbody/tr[2]/td/div/table/tbody/tr/td[4]/div").click()
    driver.find_element_by_xpath("/html/body/div[6]/div[2]/div/div/fieldset/div/table/tbody/tr[2]/td[3]/a[2]").click()
    time.sleep(1)
    driver.find_element_by_xpath("/html/body/div[3]/div/fieldset/div/table/tbody/tr[4]/td[3]/a[1]").click()
if __name__ == "__main__":
    driver=login()
    main(driver)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值