Python+Selenium:初步使用Chrome谷歌浏览器

Python+Selenium:初步使用Chrome谷歌浏览器

 http://www.testclass.net/  测试教程网,专业的selenium 学习网站。

一、配置selenium环境:

1、要自动化测试Chrome谷歌浏览器,首先要下载chromedriver驱动

驱动下载地址1:http://npm.taobao.org/mirrors/chromedriver/ 

驱动下载地址2:http://chromedriver.storage.googleapis.com/index.html 

2、查看对应Chrome版本:

      点击谷歌设置——》左上角设置旁边主菜单——》点击关于Chrome

          Python+Selenium:初步使用Chrome谷歌浏览器_第1张图片

3、下载Chrome谷歌浏览器对应版本的驱动:  Chrome  Drive 。

   下面是谷歌浏览器与chromedriver的版本对应关系,供参考:

发布时间	    chromedriver版本	支持的Chrome版本

2019-03-14	Driver     v74	            Chrome     v74
2019-02-01	Driver     v2.46	    Chrome     v71-73

2018-12-10	Driver     v2.43            Chrome     v70-72
2018-11-19	Driver     v2.44	    Chrome     v69-71
2018-10-16	Driver     v2.43	    Chrome     v69-71
2018-09-13	Driver     v2.42	    Chrome     v68-70
2018-07-27	Driver     v2.41	    Chrome     v67-69
2018-06-07	Driver     v2.40	    Chrome     v66-68
2018-05-30	Driver     v2.39	    Chrome     v66-68
2018-04-17	Driver     v2.38	    Chrome     v65-67
2018-03-16	Driver     v2.37	    Chrome     v64-66
2018-03-02	Driver     v2.36	    Chrome     v63-65
2018-01-10	Driver     v2.35	    Chrome     v62-64

注:支持chromeV74版本的driver版本号比较特别一点,不知道之后会不会回归以前正常的版本

4、下载后解压到:python文件夹目录下,

Python+Selenium:初步使用Chrome谷歌浏览器_第2张图片

Python+Selenium:初步使用Chrome谷歌浏览器_第3张图片

5、在终端安装

  • pip install selenium

6、Selenium提供了以下方法

     要定位页面中的单个元素方式:

  • find_element_by_id
  • find_element_by_name
  • find_element_by_xpath
  • find_element_by_link_text
  • find_element_by_partial_link_text
  • find_element_by_tag_name
  • find_element_by_class_name
  • find_element_by_css_selector

   要定位多个元素(这些方法将返回一个列表):

  • find_elements_by_name
  • find_elements_by_xpath
  • find_elements_by_link_text
  • find_elements_by_partial_link_text
  • find_elements_by_tag_name
  • find_elements_by_class_name
  • find_elements_by_css_selector

   selenium对页面对象的定位器的方法:find_element和find_elements。(有上面两私有方法)。

# 用例方法:

from selenium.webdriver.common.by import By

driver.find_element(By.XPATH, '//button[text()="Some text"]')

driver.find_elements(By.XPATH, '//button')

这些是By类可用的属性:

ID = "id"
XPATH = "xpath"
LINK_TEXT = "link text"
PARTIAL_LINK_TEXT = "partial link text"
NAME = "name"
TAG_NAME = "tag name"
CLASS_NAME = "class name"
CSS_SELECTOR = "css selector"

6、下面用pycharm 编写selenium webdriver 的一个简单脚本(以百度为给定网页):

 

import time
from selenium import webdriver

# 1、创建Chrome实例 。
driver = webdriver.Chrome()
# 2、driver.get方法将定位在给定的URL的网页 。
driver.get("https://www.baidu.com/") # get接受url可以是如何网址,此处以百度为例
# 3、定位元素 。
   # 3.1、用id定位输入框对象,
   driver.find_element_by_id("kw").send_keys("python")
   # 3.2、用id定位点击对象,用click()触发点击事件
   driver.find_element_by_id('su').click()
time.sleep(3) # 延迟3秒
# 4、退出访问的实例网站。
driver.quit()

7、元素的交互操作

     对获取到的元素调用交互操作

import time
from selenium import webdriver
from selenium.webdriver import ActionChains # 自动化交互
from selenium.webdriver.common.by import By # 按照什么方式查找,By.ID,By.CSS_SELECTOR
from selenium.webdriver.common.keys import Keys # 键盘按键操作
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait #等待页面加载某些元素

# 1、创建Chrome实例 。
driver = webdriver.Chrome()
# 2、driver.get方法将定位在给定的URL的网页 。
driver.get("https://www.taobao.com") # 网址淘宝
# 3、page_source——》页面源码
print(driver.page_source)
# 4、输入框的实例
input=driver.find_element_by_id("q")
# 4.1、发送搜索关键字
input.send_keys("iPhone")
time.sleep(1) # 延迟1秒
input.clear() # 清除搜索关键字,做简单交互操作
input.send_keys("iPad") # 重新发送搜索关键字
# 5、点击对象实例化
button=driver.find_element_by_class_name("btn-search")
button.click() 
time.sleep(3) # 延迟3秒

driver.quit()

8、交互动作 
      把动作附加到交互链中 ,下面是菜鸟网实现一个简单的拖拽动作 。

import time
from selenium import webdriver
from selenium.webdriver import ActionChains
# 1、创建Chrome实例 。
driver = webdriver.Chrome()
# 2、driver.get方法将定位在给定的URL的网页 。
driver.get("http://www.runoob.com/try/try.php?filename=jqueryui-api-droppable")
# 3、page_source——》页面源码
# print(driver.page_source)
# 4、切换到目标元素所在的frame
driver.switch_to.frame("iframeResult")
# 5、确定拖拽目标的起点
source=driver.find_element_by_id("draggable")
# 6、确定拖拽目标的终点
target=driver.find_element_by_id("droppable")
# 7、形成动作链
actions = ActionChains(driver)
actions.drag_and_drop(source,target)
# 8、执行
actions.perform()
time.sleep(3)
driver.quit()

9、模拟浏览器的前进后退

# 模拟浏览器的前进后退
import time
from selenium import webdriver 
# 1、创建Chrome实例 。
browser=webdriver.Chrome()                                                                                                                                                   

# 2、准备页面链接
browser.get('https://www.baidu.com')
browser.get('https://www.taobao.com')
browser.get('http://www.sina.com.cn/')                                                                                                                                     

# 3、后退函数back()
browser.back()
time.sleep(10)                                                                                                                                                                         

# 4、前函数forward()
browser.forward()
browser.close()

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

           

你可能感兴趣的:(scrapy框架)