selenium + python
介绍:
from selenium import webdriver
driver = webdriver.Firefox()
driver.get("https://www.baidu.com")
--> 将驱动放置在python的根目录
案例:
from selenium import webdriver
import time
# 打开浏览器
# 浏览器驱动放到python.exe目录下可免去将驱动地址加到环境变量步骤
driver = webdriver.Firefox()
# sllep 休眠
time.sleep(3) # 等待3秒
driver.get('https://www.baidu.com')
time.sleep(3)
driver.get('https://hao.360.cn/?src=lm&ls=n72374cee90')
time.sleep(3)
driver.back() # 返回上一页(右箭头)
driver.forward() # 去下一页(左箭头)
driver.refresh() # 刷新当前网页
driver.close() # 关闭当前窗口
# .submit() 模拟键盘的回车建
driver.find_element_by_link_text('新闻').submit()
driver.quit() # 退出浏览器,清空临时文件
定位方式:
id定位:find_element_by_id()
# 定位到输入框,输入“中文”
driver.find_element_by_id('kw').send_keys('中文')
、name定位:find_element_by_name()
# 根据name定位到百度贴吧的输入框,输入“你好”
driver.find_element_by_name('kw1').send_keys('你好')
class定位:find_element_by_class_name()
# 当class唯一时,才能使用此方法
driver.find_element_by_class_name('s_ipt').send_keys('你好')
标签名定位:find_element_by_tag_name() (由于标签名不唯一,不建议用此方法)
driver.find_element_by_tag_name('body')
# 获取定位元素下的文本信息
t = driver.find_element_by_tag_name('body').text
print(t)
link定位(链接):find_element_by_link_text()
# <a class="mnav" name="tj_trnews" href="http://news.baidu.com">新闻</a>
driver.find_element_by_link_text('新闻').click()
# 当代表link链接的文字内容过长时,可使用此方式截取部分文字定位
driver.find_element_by_partial_link_text('hao').click()
、Xpath定位:find_element_by_xpath()
driver.find_element_by_xpath(".//*[@id='u1']/a[3]").click()
CSS定位:find_element_by_css_selector()(不唯一)
driver.find_element_by_css_selector("#kw").send_keys("你好")
鼠标事件:
# 每个模拟事件后需加.perform() 才会执行
context_click() 右击
double_click() 双击
drag_and_drop(source, target) 拖动
move_to_element() 鼠标悬停
move_to 移动
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
driver = webdriver.Firefox()
# 定位到元素的源位置
ele = driver.find_element_by_link_text('新闻')
# 将鼠标移动到定位的元素上面
ActionChains(driver).move_to_element(ele).perform()
# 鼠标拖放操作:drag_and_drop(source, target)
# source: 鼠标拖动的源元素。
# target: 鼠标释放的目标元素。
# 定位元素的源位置
element = driver.find_element_by_id("xxx")
# 定位元素要移动到的目标位置
target = driver.find_element_by_id("xxx")
# 执行元素的拖放操作
ActionChains(driver).drag_and_drop(element, target).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)
# send_keys(Keys.F1) 键盘F1
# ……
# Send_keys(Keys.F5)键盘F5
# …
# send_keys(Keys.F12) 键盘F12
from selenium import webdriver
# 导入Keys 模块
from selenium.webdriver.common.keys import Keys
driver = webdriver.Firefox()
driver.get("http://www.baidu.com")
# 输入框输入内容
driver.find_element_by_id("kw").send_keys("seleniumm")
# Backspace键(删除输入的内容)
driver.find_element_by_id('kw').send_keys(Keys.BACK_SPACE)
# 如键盘的F5刷新
driver.find_element_by_id('kw').send_keys(Keys.F5)
# 输入空格键+“教程”
driver.find_element_by_id("kw").send_keys(Keys.SPACE)
driver.find_element_by_id("kw").send_keys(u"教程")
# ctrl+a 全选输入框内容
driver.find_element_by_id("kw").send_keys(Keys.CONTROL, 'a')
# ctrl+x 剪切输入框内容
driver.find_element_by_id("kw").send_keys(Keys.CONTROL, 'x')
# ctrl+v 粘贴内容到输入框
driver.find_element_by_id("kw").send_keys(Keys.CONTROL, 'v')