python:selenium

文章目录

  • 安装配置
  • 基本框架
  • 一、声明浏览器对象
  • 二、访问页面
  • 三、定位元素
  • 四、控制浏览器
  • 五、交互动作
  • 六、执行javascript
  • 七、获取元素信息
  • 八、等待
  • 九、浏览器的前进和后退
  • 十、cookies的处理
  • 十一、选项卡管理

安装配置

pip install Selenium

配置环境变量:

设置浏览器的地址非常简单。 我们可以手动创建一个存放浏览器驱动的目录,如: F:\GeckoDriver , 将下载的浏览器驱动文件(例如:chromedriver、geckodriver)丢到该目录下。

我的电脑–>属性–>系统设置–>高级–>环境变量–>系统变量–>Path,将“F:\GeckoDriver”目录添加到Path的值中。比如:Path字段;F:\GeckoDriver

基本框架

from selenium import webdriver
# 声明浏览器对象为火狐浏览器并打开
browser = webdriver.Firefox()
# 访问网页
browser.get("https://www.baidu.com")
# 隐式等待30秒
browser.implicitly_wait(30)
# 定位元素
elem = browser.find_element_by_xpath('/html/body/div[1]/div[1]/div[3]/a[1]')
# 点击定位的元素
elem.click()
# 隐式等待30秒
browser.implicitly_wait(30)
# 选取最后一个浏览器句柄为浏览器对象
browser.switch_to_window(browser.window_handles[-1])
# 隐式等待30秒
browser.implicitly_wait(30)
# 定位元素
elem = browser.find_element_by_xpath('/html/body/div[2]/div[2]/div[2]/div/ul/li[5]/a')
# 点击定位的元素
elem.click()
# 隐式等待30秒
browser.implicitly_wait(30)
# 选取最后一个浏览器句柄为浏览器对象
browser.switch_to_window(browser.window_handles[-1])
# 隐式等待30秒
browser.implicitly_wait(30)
# 定位元素
elem = browser.find_element_by_xpath('/html/body/div[3]/div[4]/div[2]/div[1]/div[2]/ul/li[1]/a')
# 点击定位的元素
elem.click()
# 关闭浏览器
browser.close()

一、声明浏览器对象

from selenium import webdriver
#声明谷歌、Firefox、Safari等浏览器
browser = webdriver.Chrome()
browser = webdriver.Firefox()
browser = webdriver.Safari()
browser = webdriver.Edge()
browser = webdriver.PhantomJS()

二、访问页面

from selenium import webdriver
browser = webdriver.Chrome()
# 访问淘宝网
browser.get("http://www.taobao.com")
# 返回网页内容
print(browser.page_source)

三、定位元素

定位一个元素 定位多个元素 含义
find_element_by_id find_elements_by_id 通过元素id定位
find_element_by_name find_elements_by_name 通过元素name定位
find_element_by_xpath find_elements_by_xpath 通过xpath表达式定位
find_element_by_link_text find_elements_by_link_tex 通过完整超链接定位
find_element_by_partial_link_text find_elements_by_partial_link_text 通过部分链接定位
find_element_by_tag_name find_elements_by_tag_name 通过标签定位
find_element_by_class_name find_elements_by_class_name 通过类名进行定位
find_elements_by_css_selector find_elements_by_css_selector 通过css选择器进行定位

四、控制浏览器

方法 说明
set_window_size() 设置浏览器的大小
back() 控制浏览器后退
forward() 控制浏览器前进
refresh() 刷新当前页面
clear() 清除文本
send_keys (value) 模拟按键输入
click() 单击元素
submit() 用于提交表单
get_attribute(name) 获取元素属性值
is_displayed() 设置该元素是否用户可见
size 返回元素的尺寸
text 获取元素的文本

五、交互动作

from selenium import webdriver
from selenium.webdriver import ActionChains
import time

browser = webdriver.Firefox()
url = "http://www.runoob.com/try/try.php?filename=jqueryui-api-droppable"
browser.get(url)
# 切换到目标元素所在的frame
browser.switch_to.frame("iframeResult")
# 确定拖拽目标的起点
source = browser.find_element_by_id("draggable")
# 确定拖拽目标的终点
target = browser.find_element_by_id("droppable")
# 形成动作链
actions = ActionChains(browser)
actions.drag_and_drop(source, target)
# 执行
actions.perform()
'''
1.先用switch_to_alert()方法切换到alert弹出框上
2.可以用text方法获取弹出的文本 信息
3.accept()点击确认按钮
4.dismiss()相当于点右上角x,取消弹出框
'''
t = browser.switch_to_alert()
print(t.text)
t.accept()
time.sleep(10)
browser.close()

六、执行javascript

实例:拖拽进度条到底,并弹出提示框

from selenium import webdriver

browser = webdriver.Firefox()
browser.get("https://www.zhihu.com/explore")
browser.execute_script("window.scrollTo(0,document.body.scrollHeight)")
browser.execute_script("alert('To Button')")
browser.close()

七、获取元素信息

方法 说明
get_attribute(“class”) 获取属性
text 获取文本值
id 获取ID
location 获取位置
tag_name 获取标签名
size 获取大小

八、等待

隐式等待
原理:隐式等待,就是在创建driver时,为浏览器对象创建一个等待时间,这个方法是得不到某个元素就等待一段时间,直到拿到某个元素位置。
注意:在使用隐式等待的时候,实际上浏览器会在你自己设定的时间内部不断的刷新页面去寻找我们需要的元素

browser.get(url)
browser.implicitly_wait(10)

显示等待
原理:显示等待,就是明确的要等到某个元素的出现,等不到就一直等,除非在规定的时间之内都没找到,那么就跳出Exception,简而言之,就是直到元素出现才去操作,如果超时则报异常

九、浏览器的前进和后退

from selenium import webdriver
import time

browser=webdriver.Firefox()
browser.get("https://www.taobao.com")
browser.get("https://www.baidu.com")
browser.get("https://www.python.org")
browser.back() # 后退
time.sleep(1)
browser.forward() # 前进
browser.close()

十、cookies的处理

from selenium import webdriver

browser = webdriver.Firefox()
browser.get("https://www.zhihu.com/explore")
print(browser.get_cookies())
browser.add_cookie(
    {"name": "name", "domain": "www.zhihu.com", "value": "germey"})
print(browser.get_cookies())
browser.delete_all_cookies()
print(browser.get_cookies())
browser.close()

十一、选项卡管理

from selenium import webdriver
import time

browser = webdriver.Firefox()
browser.get("https://www.zhihu.com/explore")
# 打开新的选项卡
browser.execute_script("window.open()")
# 输出句柄
print(browser.window_handles)
browser.switch_to_window(browser.window_handles[1])
browser.get("https://www.taobao.com")
time.sleep(1)
browser.switch_to_window(browser.window_handles[0])
browser.get("https://python.org")
browser.close()

你可能感兴趣的:(爬虫相关)