一、基本使用
from selenium import webdriver
from selenium.webdriver.common.by import By#选择器from selenium.webdriver.common.keys import Keys#按键from selenium.webdriver.support.wait import WebDriverWait#等待页面加载完成,寻找某些元素from selenium.webdriver.support import expected_conditions as EC#等待指定标签加载完毕import selenium,time
#设置开发者模式
opt = webdriver.ChromeOptions()#避免被检测 配置文件对象 不需要了解 直接赋值 粘贴即可
opt.add_experimental_option('excludeSwitches',['enable-automation'])#写入参数
browser = webdriver.Chrome(options=opt)#驱动浏览器时带个参数options
url ='https://www.baidu.com/'
browser.get(url)#请求页面 返回后的数据直接保存在browser里,不需要额外保存
text_input = browser.find_element(By.ID,'kw')#拿到输入框
text_input.send_keys('爬虫')#向输入框中写内容
text_input.send_keys(Keys.ENTER)##等待事件
wait = WebDriverWait(browser,100)#(参数1:浏览器对象;参数2:时间(s)
time.sleep(5)
browser.close()#关闭页面
二、声明不同浏览器对象
from selenium import webdriver
browser = webdriver.Chrome()
browser = webdriver.Firefox()
browser = webdriver.PhantomJS()
browser = webdriver.Safari()
三、查找元素
方法
find_element(By.ID,"id")#根据id属性来定位
find_element(By.NAME,"name")#根据name元素来定位
find_element(By.XPATH,"xpath语法")#根据xpath语法来定位
find_element(By.TAG_NAME,"input")#根据标签名来定位
find_element(By.CLASS_NAME,"classname")#根据class名字来定位
find_element(By.CSS_SELECTOR,"#id")#根据css选择器来定位
find_element(By.LINK_TEXT,"text")#根据文本属性来定位
1、单个元素
from selenium import webdriver
from selenium.webdriver.common.by import By#选择器
url ='https://www.taobao.com/'
browser = webdriver.Chrome()
browser.get(url)#通过click点击链接,By.LINK_TEXT定位超链接#browser.find_element(By.LINK_TEXT,"新闻").click()#1、通过元素id查找
by_id = browser.find_element(By.ID,'q')
by_id.send_keys('美食')print(by_id)#2、通过css选择器查找
css_select = browser.find_element(By.CSS_SELECTOR,'#q')
css_select.send_keys('美食')#3、通过XPATH寻找
xpath = browser.find_element(By.XPATH,'//*[@id="q"]')
xpath.send_keys("美食")
2、多个元素
css_select = browser.find_element(By.CSS_SELECTOR,'.service-bd li')print(css_select)#以列表形式返回#<selenium.webdriver.remote.webelement.WebElement# (session="b1f6c0b616d5f4ec617b0d8fb1b3d4f0", element="0E750E6A4C38471AEAA3D46448F80716_element_20")>
四、交互操作
对获取的元素调用交互方法
from selenium import webdriver
from selenium.webdriver.common.by import By#选择器from selenium.webdriver.common.keys import Keys#按键import time
browser = webdriver.Chrome()
browser.get('https://www.jd.com/')
text_input = browser.find_element(By.ID,'key')#找到首页输入框
text_input.send_keys('iphone')#输入请求信息
browser.find_element(By.CLASS_NAME,'button').click()#点击搜索
time.sleep(20)#延迟20s
text_input = browser.find_element(By.ID,'key')#找到登录页输入框
text_input.clear()#清空原来东西
text_input.send_keys('ipad')
browser.find_element(By.CLASS_NAME,'button cw-icon').click()
六、执行JavaScript
selenium不是万能的,有时候页面上操作无法实现的,这时候需要借助JS来完成
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get('https://news.baidu.com/')
time.sleep(2)#滚动到浏览器底部
js ='window.scrollTo(0,document.body.scrollHeight)'
driver.execute_script(js)#执行js代码
time.sleep(3)#滚动到顶部
js ='window.scrollTo(0,document.body.scrollTop=0)'#0永远表示你当时下拉条存在的位置
driver.execute_script(js)
七、获取元素信息
1、获取文本及属性值
.text获取文本值
get_attribute()根据属性获取属性值
2、等待
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By#选择器from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC #import time
url ='https://www.taobao.com/'
browser = webdriver.Chrome()
browser.get(url)
wait = WebDriverWait(browser,10)#设置等待时间input= wait.until(EC.presence_of_element_located((By.ID,'J_Toolkit')))#等待元素是否存在于页面print(input)#如果在规定时间内等到响应,会抛出异常Exception
3、EC模块的使用
八、前进后退
浏览器控制页面
from selenium import webdriver
import time
browser = webdriver.Chrome()
browser.get('https://www.baidu.com/')
browser.get('https://www.taobao.com/')
browser.get('https://www.jd.com/')
browser.back()#后退 淘宝
time.sleep(2)
browser.forward()#前进 京东
time.sleep(2)
九、选项卡管理
十、异常处理
以下简单处理两个异常:最终返回No Element
from selenium import webdriver
import time
from selenium.webdriver.common.by import By
from selenium.common.exceptions import TimeoutException,NoSuchElementException
browser = webdriver.Chrome()try:
browser.get('https://www.baidu.com/')except TimeoutException:print('Time out')try:
browser.find_element(By.ID,'hello')except NoSuchElementException:print('No Element')finally:#无论怎么样finally中都会执行
browser.close()
本文转载自: https://blog.csdn.net/weixin_44659323/article/details/136067434
版权归原作者 大码农丿 所有, 如有侵权,请联系我们删除。
版权归原作者 大码农丿 所有, 如有侵权,请联系我们删除。