python 爬虫(九)selenium常用方法总结

一、selenium常用方法


注意:下面的driver均为实例化对象

from selenium import webdriver
#1创建driver对象
driver = webdriver.Phantomjs()

1.获取当前页面的Url

方法:current_url  
实例:driver.current_url

2.获取元素坐标

方法:location
解释:首先查找到你要获取元素的,然后调用location方法
实例:driver.find_element_by_xpath("xpath").location

3.表单的提交

方法:submit
解释:查找到表单(from)直接调用submit即可
实例:driver.find_element_by_id("form1").submit()

4.获取CSS的属性值

方法:value_of_css_property(css_name)
解释:查找到css选择器标签选择器input获取CSS的属性值input.btn
实例:driver.find_element_by_css_selector("input.btn").value_of_css_property("input.btn")

5.获取元素的属性值

方法:get_attribute(element_name)
解释:查找到id为kw的值
实例:driver.find_element_by_id("kw").get_attribute("kw")

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

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.清空输入框

方法:clear()
实例:driver.clear()

19.浏览器窗口最大化

方法:maximize_window()
实例:driver.maximize_window()

20.查看浏览器的名字

方法:name
实例:drvier.name

21.返回当前会话中的cookies

方法:get_cookies()
实例:driver.get_cookies()

22.根据cookie name 查找映射Value值

方法:driver.get_cookie(cookie_name)
实例:driver.get_cookie("NET_SessionId")

23.截取当前页面

方法:save_screenshot(filename)
实例:driver.save_screenshot("D:\\Program Files\\Python27\\NM.bmp")

二、selenium十八种定位方法


前八种是大家都熟悉的,经常会用到的

  • 1.id定位: find_element_by_id(self, id_)
  • 2.name定位: find_element_by_name(self, name)
  • 3.class定位: find_element_by_class_name(self, name)
  • 4.tag定位: find_element_by_tag_name(self, name) ## 标签名
  • 5.link定位: find_element_by_link_text(self, link_text)
  • 6.partial_link定位 : find_element_by_partial_link_text(self, link_text)
  • 7.xpath定位: find_element_by_xpath(self, xpath)
  • 8.css定位: find_element_by_css_selector(self, css_selector)

这八种是复数形式

  • 9.id复数定位: find_elements_by_id(self, id_)
  • 10.name复数定位: find_elements_by_name(self, name)
  • 11.class复数定位: find_elements_by_class_name(self, name)
  • 12.tag复数定位: find_elements_by_tag_name(self, name)
  • 13.link复数定位: find_elements_by_link_text(self, text)
  • 14.partial_link: 复数定位find_elements_by_partial_link_text(self, link_text)
  • 15.xpath复数定位: find_elements_by_xpath(self, xpath)
  • 16.css复数定位: find_elements_by_css_selector(self, css_selector

这两种就是快失传了的

  • 17.find_element(self, by=‘id’, value=None)
  • 18.find_elements(self, by=‘id’, value=None)
  1. element方法定位到是是单数,是直接定位到元素

  2. elements方法是复数,这个学过英文的都知道,定位到的是一组元素,返回的是list队列

  3. 可以用type()函数查看数据类型

  4. 打印这个返回的内容看看有什么不一样
    在这里插入图片描述

elements用法总结:
何时使用: 用elements方法如何定位元素,当一个页面上有多个属性相同的元素时,然后父元素的属性也比较模糊,不太好定位。

使用方法: 这个时候不用怕,换个思维,别老想着一次定位到,可以先把相同属性的元素找出来,取对应的第几个就可以了。


三、selenium方法整理


一、常用库导入


1.from selenium import webdriver 导入webdriver模块

2.from selenium.webdriver import ActionChains 导入动作链类,动作链可以储存鼠标的动作,并一起执行

3.from selenium.webdriver.common.key import Key 键盘操作使用的是Keys类,一般配合send_keys使用

4.from selenium.webdriver.support.select import Select 下拉框的操作都交由Select类进行处理

5.from selenium.webdriver.common.by import By

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC 显示等待使用的类


二、基本操作


1.浏览器相关操作

创建浏览器对象  driver = webdriver.xxx()

窗口最大化    maximize_window()

获取浏览器尺寸  get_window_size()

设置浏览器尺寸  set_window_size()

获取浏览器位置  get_window_position()

设置浏览器位置  set_window_position(x,y)

关闭当前标签/窗口 close()

关闭所有标签/窗口  quit()

View Code


2.页面相关操作

请求某个url      driver.get(url)

刷新页面操作     refresh()

回退到之前的页面   back()

前进到之后的页面   forward()

获取当前访问页面url  current_url

获取当前浏览器标题  title

保存图片       get_screenshot_as_png()/get_screenshot_as_file(file)

网页源码       page_source

View Code


3.页面元素的定位(八种定位方式)

id定位       driver.find_element_by_id(value)

name属性值定位  driver.find_element_by_name(value)

类名定位      driver.find_element_by_class_name(value)

标签名定位     driver.find_element_by_tag_name(value)

链接文本定位    driver.find_element_by_link_text(value)

部分链接文本    driver.find_element_by_partial_link_text(value)

xpath路径表达式  driver.find_element_by_xpath(value)

css选择器     driver.find_element_by_css_selector(value)


4.元素的操作

对元素的相关操作,一般要先获取到元素,再调用相关方法 element = driver.find_element_by_xxx(value)

点击操作    element.click()

清空输入框   element.clear()

输入框输入数据 element.send_keys(data)

获取文本内容(既开闭标签之间的内容)  element.text

获取属性值(获取element元素的value属性的值)  element.get_attribute(value)

View Code


5.鼠标和键盘操作

鼠标操作需要导入类,见第一部分,然后创建对象ActionChains(driver),键盘操作导入类见第一部分

鼠标右击

el = driver.find_element_by_xxx(value)

context_click(el)

鼠标双击

el = driver.find_element_by_xxx(value)

ActionChains(driver).double_click(el).perform()

鼠标悬停

el = driver.find_element_by_xxx(value)

ActionChains(driver).move_to_element(el).perform()

常用键盘操作

send_keys(Keys.BACK_SPACE) 删除键(BackSpace)

send_keys(Keys.SPACE) 空格键(Space)

send_keys(Keys.TAB) 制表键(Tab)

send_keys(Keys.ESCAPE) 回退键(Esc)

send_keys(Keys.ENTER) 回车键(Enter)

send_keys(Keys.CONTROL,‘a’) 全选(Ctrl+A)

send_keys(Keys.CONTROL,‘c’) 复制(Ctrl+C)

send_keys(Keys.CONTROL,‘x’) 剪切(Ctrl+X)

send_keys(Keys.CONTROL,‘v’) 粘贴(Ctrl+V)

View Code


6.弹出框操作

进入到弹出框中  driver.switch_to.alert()

接收警告     accept()

关闭警告     dismiss()

发送文本到警告框 send_keys(data)


7.下拉框操作

将定位到的下拉框元素传入Select类中  selobj = Select(element)

通过索引选择,index 索引从 0 开始  select_by_index()

通过值选择(option标签的一个属性值)  select_by_value()

通过文本选择(下拉框的值)  select_by_visible_text()

查看所有已选  all_selected_options

查看第一个已选  first_selected_option

查看是否是多选  is_multiple

查看选项元素列表  options

取消选择   deselect_by_index() /deselect_by_value()/ deselect_by_visible_text()


8.滚动条操作

js = "window.scrollTo(x,y) " x为水平拖动距离,y为垂直拖动举例

driver.execute_script(js)

js= “var q=document.documentElement.scrollTop=n” n为从顶部往下移动滚动举例

driver.execute_script(js)


9.cookies操作

获取所有cookies  get_cookies()

获取key对应的值  get_cookie(key)

设置cookies  add_cookie(cookie_dict)

删除指定名称的cookie  delete_cookie(name)

删除所有cookie  delete_all_cookies()


10.多标签/多窗口、多表单/多框架切换

多表单/多框架切换

直接使用id值切换进表单   driver.switch_to.frame(value)

定位到表单元素,再切换进入

el = driver.find_element_by_xxx(value)

driver.switch_to.frame(el)

跳回最外层的页面  driver.switch_to.default_content()

跳回上层的页面  driver.switch_to.parent_frame()

多标签/多窗口之间的切换

获取所有窗口的句柄   handles = driver.window_handlers

通过窗口的句柄进入的窗口  driver.switch_to.window(handles[n])


发布了107 篇原创文章 · 获赞 43 · 访问量 6135

猜你喜欢

转载自blog.csdn.net/langdei/article/details/102883424