selenium3.0
环境搭建
1.安装python3.0(或以上版本)
2.安装pycharm
3.安装selenium3.0包
4.浏览器
selenium安装、卸载、查看命令
安装
pip install selenium
卸载
pip uninstall selenium
查看
pip show selenium
WebDriver下载地址
官方列表
http://www.seleniumhq.org/dowmload/
国内镜像
ChromeWebDriver
https://npm.taobao.org/mirrors/chromedriver/
FireFoxWebDriver
https://npm.taobao.org/mirrors/geckodriver/
mac selenium环境变量配置
一、打开Mac终端terminal :
将chromedriver移入/usr/local/bin/ 文件中
输入命令: sudo mv //Users/camille/Downloads/chromedriver /usr/local/bin/
二、查看版本
Chromedriver -v
注意:浏览器版本、webDriver版本、Selenium版本要匹配。
Selemium基础使用
from selenium import webdriver
import time
# wevdriver获取浏览器对象
driver = webdriver.Chrome()
url = "https://www.baidu.com/"
driver.get(url)
time.sleep(5)
#回收资源
driver.quit()
Selenium元素定位
获取元素的方式--普通
id:find_element_by_id
name: find_element_by_name
class_name: find_element_by_class_name
tag_name: find_element_by_tag_name
from selenium import webdriver
import time
from selenium.webdriver.common.by import By
# wevdriver获取浏览器对象
driver = webdriver.Chrome()
url = "https://www.baidu.com/"
driver.get(url)
#通过id
driver.find_element(By.ID,"kw").send_keys("美女")
driver.find_element(By.ID,"su").click()
#通过name查找
driver.find_element(By.NAME,"wd").send_keys("美女")
driver.find_element(By.ID,"su").click()
#通过classname
driver.find_element(By.CLASS_NAME,"s_ipt").send_keys("美女")
driver.find_element(By.ID,"su").click()
#定位a标签
driver.find_element(By.LINK_TEXT,"hao123").click()
driver.find_element(By.PARTIAL_LINK_TEXT,"hao12").click()
time.sleep(5)
# 回收资源
driver.quit()
获取元素的方式-css选择器
css选择器语法
https://www.w3school.com.cn/cssref/css_selectors.asp
#通过css选择器方式
driver.find_element(By.CSS_SELECTOR,"#kw").send_keys("美女")
driver.find_element(By.CSS_SELECTOR,"[name=wd]").send_keys("美女")
driver.find_element(By.CSS_SELECTOR,"[value=百度一下]").click()
获取元素的方式-xpath
#通过xpath方式
driver.find_element(By.XPATH,"//*[@id='kw']").send_keys("美女")
driver.find_element(By.XPATH,"//*[@id='su']").click()
Xpath表达式
| 表达式 | 描述 |
| nodename | 选取此节点的所有子节点 |
| / | 从根节点选取 |
| // | 从匹配选择的当前节点选择文档中的节点,而不考虑他们的位置 |
| . | 选取当前节点 |
| .. | 选取当前节点的父节点 |
获取内容
| 表达式 | 内容 |
| @ | 选取属性 |
| text() | 获取文本 |
进阶表达式
| 路径表达式 | 结果 |
| /bookstore/book[1] | 选取属于bookstore子元素的第一个book元素 |
| /bookstore/book[last()] | 选取属于bookstore子元素的最后一个book元素 |
| /bookstore/book[last()-1] | 选取属于bookstore子元素的倒数第二个book元素 |
| //book/title[text()='Harry'] | 选择所有book下的title元素,仅仅选择文本为Harry的title元素 |
| //title[@lang="eng"] | 选择lang属性值为eng的所有title元素 |
浏览器的其他操作
driver.maximize_window()
driver.set_window_size(800,600)
driver.set_window_position(200,200)
driver.back()
driver.forward()
driver.refresh()
driver.close()
driver.quit()
print(driver.title)
print(driver.current_url)
浏览器等待
1.强制等待
time.sleep(5)
2.显式等待
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
#等待某个元素是否加载完成,每隔0.5s检查一次,最多等待5s
WebDriverWait(driver,5).until(EC.presence_of_element_located((By.ID,"1")))
driver.find_element(By.ID,"1").click()
3.隐式等待
driver.implicitly_wait(5)
driver.find_element(By.ID,"1").click()
注意:代码的执行速度远远快于页面的加载速度
在翻页的时候或者是在加载新的页面的时候,需要进行页面等待
浙公网安备 33010602011771号