一家专门做特卖的网站,佘山网站建设,网络公司网站建设规划,律师网站专业设计目录
1. 安装
2. 测试
3. 无头浏览器
4. 元素定位
5. 页面滑动
6. 按键、填写登录表单
7. 页面切换 Selenium是Web的自动化测试工具#xff0c;为网站自动化测试而开发#xff0c;Selenium可以直接运行在浏览器上#xff0c;它支持所有主流的浏览器#xff0c;可以接…目录
1. 安装
2. 测试
3. 无头浏览器
4. 元素定位
5. 页面滑动
6. 按键、填写登录表单
7. 页面切换 Selenium是Web的自动化测试工具为网站自动化测试而开发Selenium可以直接运行在浏览器上它支持所有主流的浏览器可以接收指令让浏览器自动加载界面获取需要的数据页面截屏。 1. 安装
浏览器谷歌、火狐、Edge这些浏览器的内核都是google
打开浏览器设置查看浏览器版本 打开chromedriver下载网页选择一个和浏览器内核版本最接近的一个版本CNPM Binaries Mirrorhttps://registry.npmmirror.com/binary.html?pathchromedriver/点击进入此处以windows环境为示例
下载安装包并解压这个文件得到这个exe文件 如果你是使用PyCharm自带的Python解释器那么你需要将这个文件放入你的PyCharm文件的bin目录下例如C:\...\PyCharm Community Edition 2022.1.3\bin
如果你是通过PyCharm使用Anaconda虚拟环境那么你需要将这个文件放入你的Anaconda文件的Scripts目录下例如C:\...\Anaconda3\Scripts
添加环境变量如果你已经是使用过PyCharm的用户那么你的PyCharm大概率是已经添加进入环境变量了此时你不用再添加环境变量 2. 测试
写一个访问浏览器页面的测试代码首先下载selenium模块
from selenium import webdriver
import time# 这两个方法二选一webdriver.Chrome()会真的打开一个浏览器
# driver webdriver.PhantomJS()
driver webdriver.Chrome()# 访问浏览器网址
driver.get(https://www.douban.com/)# 截图保存图片
driver.save_screenshot(首页.png)# 页面停留时间
time.sleep(5)# 退出当前页面
driver.close()# 退出浏览器
driver.quit()运行成功会打开浏览器豆瓣首页网址并停留5秒拿到首页截图。 3. 无头浏览器
无头浏览器不会打开浏览器页面但会访问网页适用于Linux环境
最新的selenium已经放弃了Phantomjs直接将无头浏览器的逻辑进行了整合
from selenium import webdriver# 无头
from selenium.webdriver.chrome.options import Options# 配置参数
opt Options()
opt.add_argument(--headless)
opt.add_argument(--disable-gpu)# 把参数配置给浏览器
driver webdriver.Chrome(optionsopt)driver.get(https://www.douban.com/)
driver.save_screenshot(./selenium_test/首页1.png)
driver.close()
driver.quit()4. 元素定位
from selenium import webdriver
import time
from lxml import etree# 无头
from selenium.webdriver.chrome.options import Options# 元素定位
from selenium.webdriver.common.by import By# 配置参数
opt Options()
opt.add_argument(--headless)
opt.add_argument(--disable-gpu)# 把参数配置给浏览器
driver webdriver.Chrome(optionsopt)driver.get(https://book.douban.com/)# 截屏当前页面
driver.save_screenshot(./selenium_test/tv.png)# 获取前端代码
test driver.page_source
# print(test)# html etree.HTML(test)
# xpath_result html.xpath(//*[idcontent]/div/div[1]/div[1]/div[2]/div[1]/div/ul[2]/li)
# print(xpath_result)
# print(len(xpath_result))
# for i in xpath_result:
# print(i.xpath(.//div[classinfo]//a/title))# 元素定位
xpath_result driver.find_element(By.XPATH, //*[idcontent]/div/div[1]/div[1]/div[2]/div[1]/div/ul[2]/li[1])
print(xpath_result)
print(xpath_result.text)time.sleep(3)
driver.close()
driver.quit()5. 页面滑动
from selenium import webdriver
import timedriver webdriver.Chrome()driver.get(https:/www.douban.com/)time.sleep(2)
js window.scrollTo(0, 10000) # 向下滑
# js window.scrollTo(10000, 0) # 向左滑
# js window.scrollTo(10000, 10000) # 向左并向下滑
driver.execute_script(js)
time.sleep(2) # 向上海
js window.scrollTo(0, -10000)
driver.execute_script(js)time.sleep(5)driver.close()
driver.quit() 6. 按键、填写登录表单
from selenium import webdriver
import time
from selenium.webdriver.common.by import Bydriver webdriver.Chrome()try:driver.get(https://book.douban.com/)time.sleep(3)btn driver.find_element(By.LINK_TEXT, 登录/注册)btn.click()# url driver.current_url# driver.get(url)driver.find_element(By.XPATH, //*[idaccount]/div[2]/div[2]/div/div[1]/ul[1]/li[2]).click()time.sleep(2)# 填写登录表单driver.find_element(By.XPATH, //*[idusername]).send_keys(12345678)driver.find_element(By.XPATH, //*[idpassword]).send_keys(202125DOUBAN)time.sleep(2)driver.find_element(By.XPATH, //*[idaccount]/div[2]/div[2]/div/div[2]/div[1]/div[4]/a).click()time.sleep(10)driver.close()driver.quit()except:print(Exception) 7. 页面切换
不同的网站有不同的应有场景有些网站不会新生成页面有些网站可以自动跳转
from selenium import webdriver
from selenium.webdriver.common.by import By
from lxml import etree
import timeurl https://www.bilibili.com/
driver webdriver.Chrome()
driver.get(url)html driver.page_source
html etree.HTML(html)href html.xpath(//*[idi_cecream]/div[2]/main/div[2]/div/div[1]/div[5]/div/div[2]/a/href)
print(href)
time.sleep(3)driver.find_element(By.XPATH, //*[idi_cecream]/div[2]/main/div[2]/div/div[1]/div[5]/div/div[2]/a).click()time.sleep(3)
# 获取当前所有窗口
current_windows driver.window_handles
# 根据窗口索引进行切换
driver.switch_to.window(current_windows[0]) # 从 0 下标开始time.sleep(3)
driver.close()
time.sleep(3)
driver.quit()