Selenium 执行JavaScript

修改时间:2016-12-2
修改次数:0
状 态:未完成

Selenium:

强大的网路数据采集工具,最初为网站自动化测试而开发,现广泛用户获取精确的网站快照,selenium 可以让浏览器自动加载页面,获取数据 ,截屏,判断网站某些动作是否发生。

下载

需要和第三方浏览器结合使用,(这里结合PhantomJS,也可以是系统自带浏览器)。

  • 下载方式一:pypi.python
    sudo python setup.py install //cd 进入目录执行下面语句
  • 下载方式二:
    pip install selenium

PhantomJS:

‘无头’浏览器,把网站 加载到内存并执行页面上的JavaScript,它不会展示图像化界面。他并非Python库,所以它不能pip安装。

代码一:基本操作

from selenium import webdriver
#web= webdriver.Firefox()
web=webdriver.PhantomJS(executable_path='/Users/yvkd/Downloads/phantomjs-2.1.1-macosx/bin/phantomjs')
web.get('http://www.kushanbaoli.com') #这里的路径是phantomjs下载后一个路径
print web.find_element_by_class_name('am-padding-sm').text
web.close()

代码二:获取节点

#通过class 获取 #->id,.->class
web.find_element_by_class_name("styleName")
web.find_element_by_css_selector("#styleName")
#元素有多个样式时 class="s1,s2,s3"
web.find_element_by_css_selector(".s1,.s2,.s3")
#通过ID获取
web.find_element_by_id('content')
#通过tag
web.find_element_by_tag_name('div')
# #获得源代码
page=web.page_source
#根据xpath来进行查找
web.find_element_by_xpath()

代码三:事件操作

from selenium.webdriver.common.keys import Keys
ele=web.find_element_by_name('user')#假如,找到user的input 输入框
ele.send_keys('younger_times'+Keys.RETURN) #执行填写'younger_times' 并return

代码四:隐式等待(等待DOM发生某种事件时继续代码)

事件包括:

  • 弹框
  • 一个元素被选中
  • 标题改变
  • DOM的可见或消失
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

//隐式等待
element=WebDriverWait(web,10).until(EC.presence_of_element_located((By.sID,'loadeButton')))#EC....一个定位器被用来查找id是loadedButton的按钮
//定位器用来创建选择器,
web.find_element(By.ID,"comment").text //类似web.find_element_by_id('comment')

关于By对象:

属性说明
ID通过ID属性查找元素
CLASS_NAMEclass属性查找元素
CSS_SELECTORclass选择器查找. #idName, .className ,tagName
LINK_TEXT查找< a > 标签文字
PARTIAL_LINK_TEXT同上类似,不过是部分文字
NAMEname属性查找
TAG_NAME通过HTML标签查找
XPATHXPATH语法查找
    原文作者:younger_times
    原文地址: https://www.jianshu.com/p/ef40bd23ffe2
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞