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()

注意:代码的执行速度远远快于页面的加载速度
在翻页的时候或者是在加载新的页面的时候,需要进行页面等待

 

posted @ 2022-08-31 12:16  仿生言子  阅读(403)  评论(0)    收藏  举报