002_selenium
Posted 汁虫
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了002_selenium相关的知识,希望对你有一定的参考价值。
/* 目录: 一 下载 二 插件:ChroPath 三 定位变更 四 基础用法 五 搜索关键字,爬取内容 */
一 下载
/* 下载WebDriver: 1 url: https://sites.google.com/chromium.org/driver/downloads 2 查看电脑chrome版本,下载对应WebDriver */
二 插件:ChroPath
/* 插件: ChroPath 1 生成: 定位 2 生成: 正则表达式 3 录制: 自动录制; 手动调整。 */
三 定位变更
/* Old API New API find_element_by_id(‘id’) find_element(By.ID, ‘id’) find_element_by_name(‘name’) find_element(By.NAME, ‘name’) find_element_by_xpath(‘xpath’) find_element(By.XPATH, ‘xpath’) find_element_by_link_text(‘link_text’) find_element(By.LINK_TEXT, ‘link_text’) find_element_by_partial_link_text(‘partial_link_text’) find_element(By.PARTIAL_LINK_TEXT, ‘partial_link_text’) find_element_by_tag_name(‘tag_name’) find_element(By.TAG_NAME, ‘tag_name’) find_element_by_class_name(‘class_name’) find_element(By.CLASS_NAME, ‘class_name’) find_element_by_css_selector(‘css_selector’) find_element(By.CSS_SELECTOR, ‘css_selector’) */
四 基础用法
from selenium import webdriver # 导入selenium库中的webdriver模块 import time # 导入time模块 from selenium.webdriver.common.by import By # 导入selenium库中的By模块 from selenium.webdriver.common.keys import Keys # 导入selenium库中的Keys模块 if __name__ == \'__main__\': PATH = "C:/Users/123/Desktop/chromedriver_win32/chromedriver.exe" # 设置chromedriver的路径 driver = webdriver.Chrome(PATH) # 创建Chrome浏览器驱动对象 driver.get("https://www.baidu.com") # 访问URL - 百度 time.sleep(5) # 等待5秒钟,使页面加载完成 # 方法一:使用ID定位元素 driver.find_element(By.ID, "kw").send_keys("汁虫 博客园") # 定位搜索框元素,输入关键字"汁虫 博客园" time.sleep(3) # 等待3秒钟,使搜索结果加载完成 driver.find_element(By.ID, "su").click() # 定位搜索按钮元素,点击搜索按钮 # 方法二:使用变量定位元素 e = driver.find_element(By.ID, "kw") # 定位搜索框元素 e.send_keys("python" + Keys.RETURN) # 输入关键字"python",并按下回车键进行搜索 time.sleep(2) # 等待2秒钟 driver.quit() # 退出浏览器驱动
五 搜索关键字,爬取内容
import time 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 if __name__ == \'__main__\': PATH = "C:/Users/123/Desktop/chromedriver_win32/chromedriver.exe" driver = webdriver.Chrome(PATH) driver.get("https://hahow.in/") # 访问url # 等待搜索框元素加载完成 WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.XPATH, "//header/div[@id=\'header\']/nav[1]/div[1]/div[2]/div[1]/ul[1]/li[5]/div[1]/div[1]/input[1]")) ) e = driver.find_element(By.XPATH, "//header/div[@id=\'header\']/nav[1]/div[1]/div[2]/div[1]/ul[1]/li[5]/div[1]/div[1]/input[1]") e.clear() e.send_keys("python" + Keys.RETURN) # 等待“影音課程”链接加载完成 WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.PARTIAL_LINK_TEXT, "影音課程")) ) e = driver.find_element(By.PARTIAL_LINK_TEXT, "影音課程") e.send_keys(Keys.RETURN) time.sleep(3) # 无法解决: 显式等待 + 隐式等待 r = driver.find_elements(By.CLASS_NAME, "marg-b-10") for t in r: print(type(t), t.text) # 获取文本内容 e = driver.find_element(By.XPATH, "//header/div[@id=\'header\']/nav[1]/div[1]/div[2]/div[1]/ul[1]/li[5]/div[1]/div[1]/input[1]") time.sleep(15) driver.quit() # 退出
这样的Selenium你见过吗?
大部分人的第一次见Selenium是这样的
或是这样的
但更多是这样的
# -*- coding: utf-8 -*-
__author__ = "小dao"
from time import sleep
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
if __name__ == "__main__":
driver = webdriver.Chrome()
driver.get("http://www.python.org")
assert "Python" in driver.title
ele = driver.find_element_by_name("q")
ele.clear()
ele.send_keys("pycon")
ele.send_keys(Keys.RETURN)
assert "No results found." not in driver.page_source
sleep(5)
driver.close()
值得你收藏,值得你star,值得你fork
简单易懂的文档,是这样的
清晰的文档目录
该文档地址为:https://seleniumhq.github.io/docs/
理解WebDriver Json Protocol是深入掌握Selenium Webdriver机制的核心,其已经是W3C标准,值得你了解一下
标准文档:https://w3c.github.io/webdriver/
下面看下Python端API的源码结构,理解目录结构,弄清楚每个模块的作用是掌握Selenium Webdriver的基本功
common目录
定义了通用的异常类
webdriver目录
android、backberry、chrome、edge、firefox、ie、opera、phantomjs、safari、 webkitgtk为不同模式的浏览器的支持
common为通用的一些定义
support为一些辅助支持功能
remote为最核心的api
如果你已经工作但是经常觉得难点很多,觉得自己测试方面学的不够精想要继续学习的,想转行怕学不会的,都可以加入我们644956177,群内可领取最新软件测试大厂面试资料和Python自动化、接口、框架搭建学习资料!微信公众号【软件测试小dao】
燃烧秀发输出内容,如果有一丢丢收获,点个赞鼓励一下吧!
以上是关于002_selenium的主要内容,如果未能解决你的问题,请参考以下文章