Selenium 库的使用技巧

Selenium 库的使用技巧,第1张

概述Selenium 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在 *** 作一样。支持的浏览器包括IE,Mozilla Firefox,Safari,Google

Selenium 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在 *** 作一样。支持的浏览器包括IE,Mozilla firefox,Safari,Google Chrome,Opera等。这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和 *** 作系统之上。测试系统功能——创建回归测试检验软件功能和用户需求。支持自动录制动作和自动生成 .Net、Java、Perl等不同语言的测试脚本。 -- 百度百科

首先下载驱动文件:https://chromedriver.storage.googleapis.com/index.html?path=2.39/

放入Google目录下

测试代码,测试是否能读取到驱动文件。

from selenium import webdriverpath = "C:/Users/LyShark/AppData/Local/Google/Chrome/Application/chromedriver.exe"driver = webdriver.Chrome(executable_path=path)url = "https://www.baIDu.com"driver.get(url)print(driver.page_source)

简单的实现浏览器测试

# -*- Coding:utf-8 -*-from selenium import webdriverWebPath = "C:/Users/LyShark/AppData/Local/Google/Chrome/Application/chromedriver.exe"driver = webdriver.Chrome(executable_path=WebPath)driver.set_window_size(1000,500)url = "https://www.baIDu.com"driver.get(url)print(driver.find_element_by_ID("kw"))

Selenium 自动化测试库的使用:

<!DOCTYPE HTML><HTML lang="en"><head>    <Meta charset="gbk">    <Title>Selenium Test</Title></head><body>    <div  ID="aID">        <a  href="https://news.baIDu.com" name="trnews">新闻</a>        <a  href="https://lyshark.cnblogs.com" name="myblog">我的博客</a>        <a  href="https://github.com/lyshark" name="mygit">GitHub</a>    </div>    <form ID="forms"  name="submit_form" action="index.HTML">        <span ></span>        <p>用户: <input ID="user"  name="wd" value="" maxlength="255" autocomplete="off"></p>        <p>密码: <input ID="pass"  name="wd" value="" maxlength="255" autocomplete="off"></p>        <input type="submit" value="提交" />    </form>    <p name="p1" > hello lyshark p1</p>    <p name="p2" > hello lyshark p2</p></body></HTML>

通过简单的浏览文件并实现简单的定位.

# 驱动下载地址: http://Chromedriver.storage.GoogleAPIs.com/index.HTMLfrom selenium import webdriverWebPath = "C:/Users/LyShark/AppData/Local/Google/Chrome/Application/chromedriver.exe"driver = webdriver.Chrome(executable_path=WebPath)driver.set_window_size(1024,768)# 常用的定位变量参数如下所示.driver.get("http://lyshark.com")print("当前URL: {}".format(driver.current_url))print("当前标题: {}".format(driver.Title))print("网页代码: {}".format(driver.page_source))# 基本的 find_element 标签查找定位方式print(driver.find_element_by_ID("user"))          # 通过ID来查找元素print(driver.find_element_by_name("p1").text)     # 通过name属性来定位print(driver.find_element_by_class_name("s_ipt")) # 通过类名来定位# 通过xpath定位,xpath定位有N种写法,这里列几个常用写法print(driver.find_element_by_xpath("//form[@class='fms']//input[@ID='user']"))print(driver.find_element_by_xpath("//p[@name='p1']"))print(driver.find_element_by_xpath("//HTML/body/form/p/input"))print(driver.find_elements_by_CSS_selector(".fms #user"))# 定位a标签中的关键字.print(driver.find_element_by_link_text("新闻"))print(driver.find_element_by_partial_link_text("我"))

通过xpath定位标签并自动输入内容,发送登录请求到后端,写法如下.

from selenium import webdriverWebPath = "C:/Users/LyShark/AppData/Local/Google/Chrome/Application/chromedriver.exe"driver = webdriver.Chrome(executable_path=WebPath)driver.set_window_size(1024,768)driver.get("http://lyshark.com")# 通过xpath语法定位到用户名的标签上并且自动输入lyshark这个用户名driver.find_element_by_xpath("//form[@class='fms']/p//input[@ID='user']").send_keys("lyshark")# 通过xpath语法定位到密码的标签上清空默认值,然后输入123123密码driver.find_element_by_xpath("//form[@class='fms']/p//input[@ID='pass']").clear()driver.find_element_by_xpath("//form[@class='fms']/p//input[@ID='pass']").send_keys("123123")# 提交这个请求,默认有两种提交方式一种是 click() 一种是submit()driver.find_element_by_xpath("//form[@class='fms']/input[@type='submit']").click()

通过键盘鼠标类库记录并可回放

from selenium import webdriverfrom selenium.webdriver import ActionChainsfrom selenium.webdriver.common.keys import KeysWebPath = "C:/Users/LyShark/AppData/Local/Google/Chrome/Application/chromedriver.exe"driver = webdriver.Chrome(executable_path=WebPath)driver.set_window_size(1024,768)driver.get("https://www.baIDu.com")# ------------------------------------------------------------------------# ActionChains 类提供了鼠标 *** 作的常用方法,鼠标事件的常用函数说明# perform():        鼠标悬浮于标签# context_click():  右击# double_click():   双击# drag_and_drop():  拖动# move_to_element():鼠标悬停# 定位到要悬停的元素above = driver.find_element_by_link_text("更多产品")# 对定位到的元素执行鼠标悬停 *** 作ActionChains(driver).move_to_element(above).perform()# ------------------------------------------------------------------------# webdriver.common.keys 类提供了键盘事件的 *** 作,以下为常用的键盘 *** 作:# send_keys(Keys.BACK_SPACE) 删除键(BackSpace)# send_keys(Keys.SPACE) 空格键(Space)# send_keys(Keys.TAB) 制表键(Tab)# send_keys(Keys.ESCAPE) 回退键(Esc)# send_keys(Keys.ENTER) 回车键(Enter)# send_keys(Keys.CONTRol,'a') 全选(Ctrl+A)# send_keys(Keys.CONTRol,'c') 复制(Ctrl+C)# send_keys(Keys.CONTRol,'x') 剪切(Ctrl+X)# send_keys(Keys.CONTRol,'v') 粘贴(Ctrl+V)# send_keys(Keys.F1) 键盘 F1# 输入框输入内容driver.find_element_by_ID("kw").send_keys("seleniumm")# 删除多输入的一个 mdriver.find_element_by_ID("kw").send_keys(Keys.BACK_SPACE)# 输入空格键+从入门到入土driver.find_element_by_ID("kw").send_keys(Keys.SPACE)driver.find_element_by_ID("kw").send_keys("从入门到入土")# ctrl+a 全选输入框内容driver.find_element_by_ID("kw").send_keys(Keys.CONTRol,'a')# ctrl+x 剪切输入框内容driver.find_element_by_ID("kw").send_keys(Keys.CONTRol,'x')# ctrl+v 粘贴内容到输入框driver.find_element_by_ID("kw").send_keys(Keys.CONTRol,'v')# 通过回车键来代替单击 *** 作driver.find_element_by_ID("su").send_keys(Keys.ENTER)

简单的点击事件

# -*- Coding:utf-8 -*-from selenium import webdriverimport timeWebPath = "C:/Users/LyShark/AppData/Local/Google/Chrome/Application/chromedriver.exe"driver = webdriver.Chrome(executable_path=WebPath)driver.set_window_size(1024,768)driver.get("https://www.baIDu.com")driver.find_element_by_ID("kw").send_keys("lyshark")  # 发送给ID=kw的编辑框,搜索关键字 lysharkdriver.find_element_by_ID("su").click()               # 点击搜索按钮,百度一下的ID是sutime.sleep(1)# xpath 语法 寻找 div ID是1里面的 a标签取出标签中的 contains text()driver.find_element_by_xpath("//div[@ID='1']//a[contains(text(),'-')]").click()time.sleep(1)handle = driver.current_window_handle   # 获取当前窗口句柄handle_all = driver.window_handles      # 获取当前所有开启窗口的句柄print(handle_all)driver.switch_to.window(handle_all[0])   # 切换到第一个窗口中time.sleep(1)driver.find_element_by_ID("kw").clear()  # 接着清空搜索框中的内容

百度自动收集

from selenium import webdriverfrom bs4 import BeautifulSoupfrom queue import Queueimport requests,os,re,lxml# driver: http://Chromedriver.storage.GoogleAPIs.com/index.HTML?path=79.0.3945.36/head = {"User-Agent":"Mozilla/5.0 (iPhone; U; cpu like Mac OS X) AppleWebKit/420.1 (KHTML,like Gecko) Version/3.0 Mobile/4A93 Safari/419.3"}WebPath = "C:/Users/LyShark/AppData/Local/Google/Chrome/Application/chromedriver.exe"driver = webdriver.Chrome(executable_path=WebPath)queue = Queue()for item in range(0,1000,10):	queue.put('https://www.baIDu.com/s?wd={}&pn={}'.format("lyshark",str(item)))for item in queue.queue:	driver.get(item)	ret = str(driver.page_source)	try:		soup = BeautifulSoup(ret,'lxml')		urls = soup.find_all(name='a',attrs={'data-click':re.compile(('.')),'class':None})		for item in urls:		    get_url = requests.get(url=item['href'],headers=head,timeout=5)		    if get_url.status_code == 200:		        print(get_url.url)	except Exception:		pass

页面等待

from selenium import webdriverdriver=webdriver.Chrome()driver.get('https://www.taobao.com/')wait=webdriverwait(driver,3)  #设置监听driver等待时间3秒input=wait.until(EC.presence_of_element_located((By.ID,'q'))) #设置等待条件为ID为q的元素加载完成button=wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,'.btn-search')))  #设置等待条件为class名为btn-search的元素加载完成print(input,button)driver = webdriver.firefox()driver.implicitly_wait(10) #隐式等待设置为10等待时间driver.get("http://somedomain/url_that_delays_loading")myDynamicElement = driver.find_element_by_ID("myDynamicElement")

键盘 *** 作

element=driver.find_element_by_ID('search')  #获取输入框element.send_keys('selenium')  #搜索selenium包element.send_keys(Keys.ENTER)  #按回车键element_a=driver.find_element_by_link_text('selenium') #定位selenium包链接ActionChains(driver).move_to_element(element_a).click(element_a).perform() #按左键点击链接执行element_down=driver.find_element_by_link_text('Download files')  #定位下载链接ActionChains(driver).move_to_element(element_down).click(element_down).perform()  #按左键点击链接element_selenium=driver.find_element_by_link_text('selenium-3.13.0.tar.gz')  #定位元素selenium下载包链接data=element_selenium.get_attribute('href')   #获取链接地址with open('selenium-3.13.0.tar.gz','wb') as f:    source=requests.get(data).content   #请求下载链接地址获取二进制包数据    f.write(source)  #写入数据    f.close()    driver.quit()menu = driver.find_element_by_CSS_selector(".nav") #获取element对象hIDden_submenu = driver.find_element_by_CSS_selector(".nav #submenu1")  #获取点击对象#创建鼠标对象actions = ActionChains(driver)#移动鼠标到对象actions.move_to_element(menu)#点击对象actions.click(hIDden_submenu)#执行 *** 作actions.perform()
总结

以上是内存溢出为你收集整理的Selenium 库的使用技巧全部内容,希望文章能够帮你解决Selenium 库的使用技巧所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1157873.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存