一、webdriver 提供了一系列的对象定位方法,常用的有以下几种:id定位:find_element_by_id()

name定位:find_element_by_name()

class定位:find_element_by_class_name()

link定位:find_element_by_link_text()

partial link定位:find_element_by_partial_link_text()

tag定位:find_element_by_tag_name()

xpath定位:find_element_by_xpath()

css定位:find_element_by_css_selector()

二、鼠标事件

webdriver 中比较常用的操作对象的方法有下面几个:click——点击对象

send_keys——在对象上模拟按键输入

clear——清除对象的内容,如果可以的话

submit——提交对象的内容,如果可以的话

text——用于获取元素的文本信息

一般包括鼠标右键、双击、拖动、移动鼠标到某个元素上等等。

需要引入ActionChains类。

引入方法:

from selenium.webdriver.common.action_chains import ActionChainsActionChains 常用方法:

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

context_click()  右击;

double_click()   双击;

drag_and_drop()  拖动;

move_to_element()  鼠标悬停。#定位到要双击的元素

qqq =driver.find_element_by_xpath("xxx")

#对定位到的元素执行鼠标双击操作

ActionChains(driver).double_click(qqq).perform()#定位元素的原位置

element = driver.find_element_by_name("source")

#定位元素要移动到的目标位置

target = driver.find_element_by_name("target")

#执行元素的移动操作

ActionChains(driver).drag_and_drop(element, target).perform()

三、对键盘事件

from selenium.webdriver.common.keys import Keys通过 send_keys()调用按键:

send_keys(Keys.TAB) # TAB

send_keys(Keys.ENTER) # 回车

#ctrl+a 全选输入框内容

driver.find_element_by_id(“kw”).send_keys(Keys.CONTROL,’a’)

四、selenium add_argument 参数表

driver = webdriver.Chrome(options=chrome_options)

其中options设置有很多,常用的如下:

chrome_options.add_argument(‘–user-agent=””‘) # 设置请求头的User-Agent

chrome_options.add_argument(‘–window-size=1280×1024’) # 设置浏览器分辨率(窗口大小)

chrome_options.add_argument(‘–start-maximized’) # 最大化运行(全屏窗口),不设置,取元素会报错

chrome_options.add_argument(‘–disable-infobars’) # 禁用浏览器正在被自动化程序控制的提示

chrome_options.add_argument(‘–incognito’) # 隐身模式(无痕模式)

chrome_options.add_argument(‘–hide-scrollbars’) # 隐藏滚动条, 应对一些特殊页面

chrome_options.add_argument(‘–disable-javascript’) # 禁用javascript

chrome_options.add_argument(‘–blink-settings=imagesEnabled=false’) # 不加载图片, 提升速度

chrome_options.add_argument(‘–headless’) # 浏览器不提供可视化页面

chrome_options.add_argument(‘–ignore-certificate-errors’) # 禁用扩展插件并实现窗口最大化

chrome_options.add_argument(‘–disable-gpu’) # 禁用GPU加速,如果不加这个选项,有时定位会出现问题

chrome_options.add_argument(‘–disable-software-rasterizer’)

chrome_options.add_argument(‘–disable-extensions’)

chrome_options.add_argument(‘–start-maximized’)

chrome_options.add_argument((‘–proxy-server=’ + ip)) 设置代理

其他的一些关于Chrome的实用参数及简要的中文说明,使用方法同上4.5.4,当然也可以在shell中使用。

–user-data-dir=”[PATH]” 指定用户文件夹User Data路径,可以把书签这样的用户数据保存在系统分区以外的分区。

–disk-cache-dir=”[PATH]“ 指定缓存Cache路径

–disk-cache-size= 指定Cache大小,单位Byte

–first run 重置到初始状态,第一次运行

–incognito 隐身模式启动

–disable-javascript 禁用Javascript

–omnibox-popup-count=“num” 将地址栏弹出的提示菜单数量改为num个。我都改为15个了。

–user-agent=“xxxxxxxx” 修改HTTP请求头部的Agent字符串,可以通过about:version页面查看修改效果

–disable-plugins 禁止加载所有插件,可以增加速度。可以通过about:plugins页面查看效果

–disable-javascript 禁用JavaScript,如果觉得速度慢在加上这个

–disable-java 禁用java

–start-maximized 启动就最大化

–no-sandbox 取消沙盒模式

–single-process 单进程运行

–process-per-tab 每个标签使用单独进程

–process-per-site 每个站点使用单独进程

–in-process-plugins 插件不启用单独进程

–disable-popup-blocking 禁用弹出拦截

–disable-plugins 禁用插件

–disable-images 禁用图像

–incognito 启动进入隐身模式

–enable-udd-profiles 启用账户切换菜单

–proxy-pac-url 使用pac代理 [via 1/2]

–lang=zh-CN 设置语言为简体中文

–disk-cache-dir 自定义缓存目录

–disk-cache-size 自定义缓存最大值(单位byte)

–media-cache-size 自定义多媒体缓存最大值(单位byte)

–bookmark-menu 在工具 栏增加一个书签按钮

–enable-sync 启用书签同步

–single-process 单进程运行Google Chrome

–start-maximized 启动Google Chrome就最大化

–disable-java 禁止Java

–no-sandbox 非沙盒模式运行

五、执行js

利用selenium的browser.execute_script()方法来执行上面的JS方法:

browser.execute_script(‘window.scrollBy(200,0)’)

六、一些常用的例子

1.获取当前页面的Url函数

方法:current_url

实例:

driver.current_url

2.获取元素坐标

方法:location

解释:首先查找到你要获取元素的,然后调用location方法

实例:

driver.find_element_by_xpath(“//*[@id=’tablechart’]/tbody/tr[14]/td[9]”).location

3.表单的提交

方法:submit

解释:查找到表单(from)直接调用submit即可

实例:

driver.find_element_by_id(“form1”).submit()

4.获取CSS的属性值

方法:value_of_css_property(css_name)

实例:

driver.find_element_by_css_selector(“input.btn”).value_of_css_property(“input.btn”)

5.获取元素的属性值

方法:get_attribute(element_name)

实例:

driver.find_element_by_id(“sellaiyuan”).get_attribute(“sellaiyuan”)

6.判断元素是否被选中

方法:is_selected()

实例:

driver.find_element_by_id(“form1”).is_selected()

7.返回元素的大小

方法:size

实例:

driver.find_element_by_id(“iptPassword”).size

返回值:{‘width’: 250, ‘height’: 30}

8.判断元素是否显示

方法:is_displayed()

实例:

driver.find_element_by_id(“iptPassword”).is_displayed()

9.判断元素是否被使用

方法:is_enabled()

实例:

driver.find_element_by_id(“iptPassword”).is_enabled()

10.获取元素的文本值

方法:text

实例:driver.find_element_by_id(“iptUsername”).text

11.元素赋值

方法:send_keys(*values)

实例:

driver.find_element_by_id(“iptUsername”).send_keys(‘admin’)

注意如果是函数需要增加转义符u,eg.

driver.find_element_by_id(“iptUsername”).send_keys(u’青春’)

12.返回元素的tagName

方法:tag_name

实例:

driver.find_element_by_id(“iptUsername”).tag_name

13.删除浏览器所以的cookies

方法:delete_all_cookies()

实例:

driver.delete_all_cookies()

14.删除指定的cookie

方法:delete_cookie(name)

实例:deriver.delete_cookie(“my_cookie_name”)

15.关闭浏览器

方法:close()

实例:driver.close()

16.关闭浏览器并且推出驱动程序

方法:quit()

实例:driver.quit()

17.返回上一页

方法:back()

实例:driver.back()

18.设置等待超时

方法:implicitly_wait(wait_time)

实例:driver.implicitly_wait(30)

19.浏览器窗口最大化

方法:maximize_window()

实例:driver.maximize_window()

20.查看浏览器的名字

方法:name

实例:drvier.name