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