python 基础 八Selenium
Selenium:
1、selenuim是一个用于web应用程序的工具。
2、selenuim测试直接运行在浏览器中,就像真正的用户在操作一样。
3、支持通过各种driveer(FirfoxDriver,IternetExplorerDriver,OperaDriver,ChromeDriver)驱动真实浏览完成测试。
4、selenium也是支持无界面浏览器操作。
为什么使用selenium
模拟浏览器功能,自动执行网页中的js代码,实现动态加载
Selenium的基本使用
如何安装selenium
(1)操作谷歌浏览器驱动下载地址
http://chromedriver.storage.googleapis.com/index.html (以前版本)
https://googlechromelabs.github.io/chrome-for-testing/#stable (高版本)
1、安装具体步骤如下:①准备需要的浏览器驱动,故需要准备和浏览器相同版本的驱动,具体为:先查看浏览器的版本号,再去“https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/”中下载一
个版本号相同的浏览器驱动。然后对下载的文件进行解压,再将其中的exe文件复制到文件夹“爬虫的Selenium”的script中。
2、安装第三方包selenium,具体为:打开命令提示符,将当前目录切换到文件夹Scripts中,使用安装指令“pip install selenium -i https://pypi.mirrors.ustc.edu.cn/simple/”后等待一会儿即可安装完成(注意:此处下载
selenium时,在根目录的scrip中安装,不然后续操作可能会出现问题)
3、第一步,引入: from selenium import webdriver, 第二步、创建对象 selenium 是4.11.2以上的版本,不需要设置driver.exe的路径,selenium 可以自己处理浏览器的驱动程序,因此代码直接改为brower = webdriver.Chrome()即可。 #path = '.venv/Scripts/chromedriver.exe' 第三步: 打开浏览器 url = 'https://www.baidu.com' brower.get(url)
Selenium的元素定位
元素定位的方法:
1.find_element():返回一个元素,find_elements():返回一个列表,browser.find_element(By.XPATH,'//div[@id="main"]')
获取元素属性:
1、获取元素标签名:input = browser.find_element(By.ID, 'su')
print(input.tag_name)
2、获取元素文本:input = browser.find_element(By.ID, 'su')
print(input.text)
3、获取元素位置:input = browser.find_element(By.ID, 'su')
print(input.location)
4、获取元素大小:input = browser.find_element(By.ID, 'su')
print(input.size)
Selenium的交互:
页面交互指的是我们平时在浏览器上的各种操作,比如输入文本、点击链接、回车、下拉框等,下面就演示 selenium 是如何进行页面交互的。
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
# 创建浏览器操作对象
# path = 'chromedriver.exe'
browser = webdriver.Chrome()
# 访问网站
url = 'https://www.baidu.com'
browser.get(url)
# 定位输入框
input = browser.find_element(By.ID, 'kw')
# 输入文本selenium
input.send_keys('selenium')
time.sleep(2)
# 关闭浏览器
browser.close()
点击:
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
# 创建浏览器操作对象
# path = 'chromedriver.exe'
browser = webdriver.Chrome()
# 访问网站
url = 'https://www.baidu.com'
browser.get(url)
# 定位输入框
input = browser.find_element(By.ID, 'kw')
# 输入文本selenium
input.send_keys('selenium')
time.sleep(2)
# 定位百度一下的按钮
button = browser.find_element(By.ID, 'su')
# 点击按钮
button.click()
time.sleep(2)
# 关闭浏览器
browser.close()
回车确认:
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
# 创建浏览器操作对象
# path = 'chromedriver.exe'
browser = webdriver.Chrome()
# 访问网站
url = 'https://www.baidu.com'
browser.get(url)
# 定位输入框
input = browser.find_element(By.ID, 'kw')
# 输入文本selenium
input.send_keys('selenium')
time.sleep(2)
# 回车查询
input.submit()
time.sleep(2)
# 关闭浏览器
browser.close()
运行 JavaScript:
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
# 创建浏览器操作对象
# path = 'chromedriver.exe'
browser = webdriver.Chrome()
# 访问网站
url = 'https://www.baidu.com'
browser.get(url)
# 定位输入框
input = browser.find_element(By.ID, 'kw')
# 输入文本selenium
input.send_keys('selenium')
time.sleep(2)
# 回车查询
input.submit()
time.sleep(2)
# js代码
js_bottom = 'document.documentElement.scrollTop=100000'
# 下拉进度条,页面滑动
browser.execute_script(js_bottom)
time.sleep(2)
# 关闭浏览器
browser.close()
前进后退:
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
# 创建浏览器操作对象
# path = 'chromedriver.exe'
browser = webdriver.Chrome()
# 访问网站
url = 'https://www.baidu.com'
browser.get(url)
# 定位输入框
input = browser.find_element(By.ID, 'kw')
# 输入文本selenium
input.send_keys('selenium')
time.sleep(2)
# 回车查询
input.submit()
time.sleep(2)
# js代码
js_bottom = 'document.documentElement.scrollTop=100000'
# 页面滑动
browser.execute_script(js_bottom)
time.sleep(2)
# 定位下一页的按钮
next = browser.find_element(By.XPATH, '//a[@class="n"]')
# 点击下一页
next.click()
time.sleep(2)
# 返回到上一页面
browser.back()
time.sleep(2)
# 前进到下一页
browser.forward()
time.sleep(2)
# 关闭浏览器
browser.close()