知否知否-----selenium知多少

简介: 知否知否-----selenium知多少

关于selenium,就不多介绍什么了,主要就是用来进行自动化的工具。怎样进行自动化,这才是它大放异彩的地方。下面就来看看吧!

640.jpg


selenium定位


关于定位,一共有八种方法:

  • find_element_by_id()
  • find_element_by_name()
  • find_element_by_class_name()
  • find_element_by_tag_name()
  • find_element_by_link_text()
  • find_element_by_partial_link_text()
  • find_element_by_xpath()
  • find_element_by_css_selector()


用的比较多的是id,xpath


xpath的话不一定需要xpath基础,主要是chrome浏览器可以在控制卡右键获取,是不是很方便??


还有一些其他的:


下面是我们要定位的元素(从百度[www.baidu.com]拿过来的):

<input id="kw" class="s_ipt" name="wd" 
value="" maxlength="255" autocomplete="off"


  • 通过id定位:
dr.find_element_by_id("kw")
  • 通过name定位:
dr.find_element_by_name("wd")
  • 通过class name定位:
dr.find_element_by_class_name("s_ipt")
  • 通过tag name定位:
dr.find_element_by_tag_name("input")
  • 通过css定位:
dr.find_element_by_css_selector("#kw")



Selenium控制浏览器

首先,最基础的,打开百度:

from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")

这个应该没多大问题。


关于浏览器的一些设置这才是重点:

现在我需要:

设置浏览器宽400、高900显示

driver.set_window_size(400, 900)

driver.set_window_size(400, 900)


控制浏览器前进、后退:

我们打开了第二个网页新闻

driver.get('http://news.baidu.com')

后退到一开始的百度:

driver.back()

再前进到新闻

driver.forward()



Selenium-Webdriver常用方法


用户对于网页的常用操作无非以下几种:


点击

driver.find_element_by_id("kw").click()

在找到元素后触发点击事件


输入:

driver.find_element_by_id("kw").send_keys("python大法好")

找到输入框后,触发输入方法


(这里有一点要说一下,为了证明你是一个合格的或者是比较细心的tester,这时候你就需要在输入之前做一件事,这件事就是清空数据,防止输入框里面有缓存数据,我们就需要清空

driver.find_element_by_id("kw").clear()


还有就是表单提交

driver.find_element_by_id("kw").send_keys("python大法好").submit()

submit方法


还有一些不常用的方法:

获取元素的大小尺寸:

driver.find_element_by_id("kw").size


获取元素的文本:

driver.find_element_by_id("kw").text


获取属性值:

driver.find_element_by_id("kw").get_attribute('type')


查看元素是否可见:

driver.find_element_by_id("kw").is_displayed()






Selenium鼠标


关于鼠标,我们之前有个click事件其实就说鼠标的功能,现在我们看看还有哪些常用操作。


在selenium里,这些操作都封装在ActionChains 类中。

可以通过下面这种方法直接导入ActionChains这个类:

from selenium.webdriver import ActionChains
  • perform(): 执行所有 ActionChains 中存储的行为;
  • context_click(): 右击;
driver.find_element_by_id("kw").context_click()
  • double_click(): 双击;
driver.find_element_by_id("kw").double_click()
  • drag_and_drop(): 拖动;
  • move_to_element(): 鼠标悬停。


鼠标悬停的时候分为两步,先定位到悬停的元素,再对定位到的元素执行鼠标悬停操作。

above = driver.find_element_by_link_text("设置")
ActionChains(driver).move_to_element(above).perform()



Selenium键盘事件


Keys()类提供了键盘上几乎所有按键的方法。


我们之前说过send_keys()方法可以用来模拟键盘输入。


删除一个字符

如果说之前输入了1233

driver.find_element_by_id("kw").send_keys(Keys.BACK_SPACE)

执行了这一句之后输入就变成123


输入空格

driver.find_element_by_id("kw").send_keys(Keys.SPACE)


全选输入框的内容 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')


复制 Ctrl + c

driver.find_element_by_id("kw").send_keys(Keys.CONTROL, 'c')

回车键

driver.find_element_by_id("su").send_keys(Keys.ENTER)




Selenium断言


做测试最重要的就是断言,我们通常可以通过获取title 、URL和text等信息进行断言。

在python里面有个assert的关键字,这是我们做断言的关键,在selenium里面我们可以将测试的结果和预期的结果做比较,这样就是一种断言。


driver.title
driver.find_element_by_class_name('nums').text



Selenium等待

9

等待分为两种,一种是显式等待,一种是隐式等待。

显式等待是WebdDriver等待某个条件成立时继续执行,否则在达到最大时长时抛出超时异常。


WebDriverWait(driver, timeout, poll_frequency=0.5, ignored_exceptions=None)
driver :浏览器驱动。
timeout :最长超时时间,默认以秒为单位。
poll_frequency :检测的间隔(步长)时间,默认为0.5S。
ignored_exceptions :超时后的异常信息,
默认情况下抛NoSuchElementException异常。
WebDriverWait()一般由until()或until_not()方法配合使用,
下面是until()和until_not()方法的说明。
until(method, message=‘’)
调用该方法提供的驱动程序作为一个参数,直到返回值为True。
until_not(method, message=‘’)
调用该方法提供的驱动程序作为一个参数,直到返回值为False。


driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
element = WebDriverWait(driver, 5, 0.5).until(
                      EC.presence_of_element_located((By.ID, "kw")))
element.send_keys('python乱炖')



隐式等待

WebDriver提供了implicitly_wait()方法来实现隐式等待,默认设置为0。它的用法相对来说要简单得多。


driver.implicitly_wait(1)


这就是一个简单的隐式等待。

默认参数的单位为秒,本例中设置等待时长为1秒。首先这1秒并非一个固定的等待时间,它并不影响脚本的执行速度。其次,它并不针对页面上的某一元素进行等待。当脚本执行到某个元素定位时,如果元素可以定位,则继续执行;如果元素定位不到,则它将以轮询的方式不断地判断元素是否被定位到。若直到超出设置时长(1秒)还没有定位到元素,则抛出异常。



下期继续。


相关文章
|
JavaScript 前端开发 测试技术
知否知否-----selenium知多少(二)
知否知否-----selenium知多少(二)
144 0
|
2月前
|
Web App开发 前端开发 JavaScript
探索Python科学计算的边界:利用Selenium进行Web应用性能测试与优化
【10月更文挑战第6天】随着互联网技术的发展,Web应用程序已经成为人们日常生活和工作中不可或缺的一部分。这些应用不仅需要提供丰富的功能,还必须具备良好的性能表现以保证用户体验。性能测试是确保Web应用能够快速响应用户请求并处理大量并发访问的关键步骤之一。本文将探讨如何使用Python结合Selenium来进行Web应用的性能测试,并通过实际代码示例展示如何识别瓶颈及优化应用。
142 5
|
11天前
|
Web App开发 IDE JavaScript
Selenium IDE:Web自动化测试的得力助手
Selenium IDE:Web自动化测试的利器。作为开源工具,Selenium IDE支持录制与回放用户操作,适用于Chrome、Firefox等多浏览器,简化了测试流程,提升了效率,降低了自动化测试的门槛。它还支持导出多种编程语言的脚本,便于测试集成与复用。
62 19
Selenium IDE:Web自动化测试的得力助手
|
13天前
|
Web App开发 IDE 测试技术
Selenium:强大的 Web 自动化测试工具
Selenium 是一款强大的 Web 自动化测试工具,包括 Selenium IDE、WebDriver 和 Grid 三大组件,支持多种编程语言和跨平台操作。它能有效提高测试效率,解决跨浏览器兼容性问题,进行性能测试和数据驱动测试,尽管存在学习曲线较陡、不稳定等缺点,但其优势明显,是自动化测试领域的首选工具。
95 17
Selenium:强大的 Web 自动化测试工具
|
2月前
|
Java 测试技术 C#
自动化测试之美:从Selenium到Appium
【10月更文挑战第3天】在软件开发的海洋中,自动化测试如同一艘航船,引领着质量保证的方向。本文将带你领略自动化测试的魅力,从Web端的Selenium到移动端的Appium,我们将一探究竟,看看这些工具如何帮助我们高效地进行软件测试。你将了解到,自动化测试不仅仅是技术的展示,更是一种提升开发效率和产品质量的智慧选择。让我们一起启航,探索自动化测试的世界!
|
2月前
|
JavaScript 前端开发 测试技术
精通Selenium:从基础到高级的网页自动化测试策略
【10月更文挑战第6天】随着Web应用变得越来越复杂,手动进行功能和兼容性测试变得既耗时又容易出错。自动化测试因此成为了现代软件开发不可或缺的一部分。Selenium是一个强大的工具集,它支持多种编程语言(包括Python),允许开发者编写脚本来模拟用户与Web页面的交互。本文将带领读者从Selenium的基础知识出发,逐步深入到高级的应用场景,通过丰富的代码示例来展示如何高效地进行网页自动化测试。
500 5
|
2月前
|
Web App开发 IDE 测试技术
自动化测试的利器:Selenium 框架深度解析
【10月更文挑战第2天】在软件开发的海洋中,自动化测试犹如一艘救生艇,让质量保证的过程更加高效与精准。本文将深入探索Selenium这一强大的自动化测试框架,从其架构到实际应用,带领读者领略自动化测试的魅力和力量。通过直观的示例和清晰的步骤,我们将一起学习如何利用Selenium来提升软件测试的效率和覆盖率。
|
1月前
|
Web App开发 设计模式 JavaScript
自动化测试之美:如何利用Selenium实现Web应用的高效测试
【10月更文挑战第29天】在软件开发的世界中,测试是确保产品质量的关键步骤。本文将带你了解如何使用Selenium这一强大的自动化测试工具,提高Web应用测试的效率和准确性。通过实际案例,我们将探索Selenium的核心功能及其在现代软件开发中的应用,旨在帮助读者掌握自动化测试的精髓,从而提升软件测试工作的整体效能。
44 0
|
2月前
|
Web App开发 缓存 Linux
高效Selenium测试技巧:轻松控制已开启的浏览器
【10月更文挑战第13天】在进行Selenium测试时,通常会启动新浏览器实例,但有时需要控制已开启的浏览器,以节省时间并更真实地模拟用户行为。这可通过设置Chrome为可远程控制并使用`Remote WebDriver`连接实现。需在启动Chrome时添加`--remote-debugging-port`参数,并通过Python脚本中的`webdriver.Remote`连接至指定端口。此外,还可利用会话ID(Session ID)重新连接浏览器,提高测试灵活性。需要注意浏览器版本兼容性及元素定位稳定性等问题,确保测试准确性和一致性。
389 1
|
2月前
|
测试技术 数据安全/隐私保护 开发者
自动化测试的奥秘:如何用Selenium和Python提升软件质量
【9月更文挑战第35天】在软件开发的海洋中,自动化测试是那艘能引领我们穿越波涛的帆船。本文将揭开自动化测试的神秘面纱,以Selenium和Python为工具,展示如何构建一个简单而强大的自动化测试框架。我们将从基础出发,逐步深入到高级应用,让读者能够理解并实现自动化测试脚本,从而提升软件的质量与可靠性。

热门文章

最新文章