Web自动化测试Selenium

Selenium

Selenium IDE

CSS 表达式

Selector Example Example description
.class .intro Selects all elements with class=intro
.class1.class2 .name1.name2 Selects all elements with both name1 and name2 set within its class attribute
.class1 .class2 .name1 .name2 Selects all elements with name2 that is a descendant of an element with name1
#id #firstname Selects the element with id=firstname
* * Selects all elements
element p Selects all

elements

element.class p.intro Selects all

elements with class=intro

element,element div, p Selects all
elements and all

elements

element element div p Selects all

elements inside

elements
element>element div > p Selects all

elements where the parent is a

element
element+element div + p Selects the first

element that is placed immediately after

elements
element1~element2 p ~ ul Selects every
    element that is preceded by a

    element

[attribute] [target] Selects all elements with a target attribute
[attribute=value] [target=_blank] Selects all elements with target=_blank
[attribute~=value] [title~=flower] Selects all elements with a title attribute containing the word flower
[attribute =value] [lang
[attribute^=value] a[href^=https] Selects every element whose href attribute value begins with https
[attribute$=value] a[href$=.pdf] Selects every element whose href attribute value ends with .pdf
[attribute*=value] a[href*=w3schools] Selects every element whose href attribute value contains the substring w3schools
:active a:active Selects the active link
::after p::after Insert something after the content of each

element

::before p::before Insert something before the content of each

element

:checked input:checked Selects every checked element
:default input:default Selects the default element
:disabled input:disabled Selects every disabled element
:empty p:empty Selects every

element that has no children (including text nodes)

:enabled input:enabled Selects every enabled element
:first-child p:first-child Selects every

element that is the first child of its parent

::first-letter p::first-letter Selects the first letter of every

element

::first-line p::first-line Selects the first line of every

element

:first-of-type p:first-of-type Selects every

element that is the first

element of its parent

:focus input:focus Selects the input element which has focus
:fullscreen :fullscreen Selects the element that is in full-screen mode
:hover a:hover Selects links on mouse over
:in-range input:in-range Selects input elements with a value within a specified range
:indeterminate input:indeterminate Selects input elements that are in an indeterminate state
:invalid input:invalid Selects all input elements with an invalid value
:lang(language) p:lang(it) Selects every

element with a lang attribute equal to it (Italian)

:last-child p:last-child Selects every

element that is the last child of its parent

:last-of-type p:last-of-type Selects every

element that is the last

element of its parent

:link a:link Selects all unvisited links
::marker ::marker Selects the markers of list items
:not(selector) :not(p) Selects every element that is not a

element

:nth-child(n) p:nth-child(2) Selects every

element that is the second child of its parent

:nth-last-child(n) p:nth-last-child(2) Selects every

element that is the second child of its parent, counting from the last child

:nth-last-of-type(n) p:nth-last-of-type(2) Selects every

element that is the second

element of its parent, counting from the last child

:nth-of-type(n) p:nth-of-type(2) Selects every

element that is the second

element of its parent

:only-of-type p:only-of-type Selects every

element that is the only

element of its parent

:only-child p:only-child Selects every

element that is the only child of its parent

:optional input:optional Selects input elements with no required attribute
:out-of-range input:out-of-range Selects input elements with a value outside a specified range
::placeholder input::placeholder Selects input elements with the placeholder attribute specified
:read-only input:read-only Selects input elements with the readonly attribute specified
:read-write input:read-write Selects input elements with the readonly attribute NOT specified
:required input:required Selects input elements with the required attribute specified
:root :root Selects the document’s root element
::selection ::selection Selects the portion of an element that is selected by a user
:target #news:target Selects the current active #news element (clicked on a URL containing that anchor name)
:valid input:valid Selects all input elements with a valid value
:visited a:visited Selects all visited links

练习3

  • 打开 https://ceshiren.com
  • 点击搜索按钮
  • 点击高级搜索按钮
  • 在输入框内输入你的查询词
  • 点击搜索

使用selenium ide录制测试用例,并导出为脚本放到项目中。

练习4

  • 把录制的脚本进行优化 定位符
  • 浏览量过滤
  • 参数化 至少3个搜素词
  • 断言

常见错误

selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable

加入显式等待

Page Object Model

PO的六大原则

  • class 使用类代表页面
  • method 使用公开方法代表页面所提供的功能
  • params 用参数代表一个功能的输入数据,用返回值代表一个功能的结果
  • return 一个方法的结果可以是页面对象,可以是当前页面对象自己,或者其他的页面对象。也可以是返回的数据
  • testcase 调用页面对象,使用初始化实例、调用方法、获取数据进行断言,用到测试前置、测试数据、测试的步骤,断言。
  • automation 页面对象的初始化方法构造与传参,具体的页面对象方法自动化过程与传参、定位符

练习5

把自己的搜索测试代码转成基于Page Object Models的形式,完成后在群里回复5

宠物商店演练

https://petclinic-angular-web.k8s.hogwarts.ceshiren.com/#/welcome

练习6

使用pom模型完成宠物商店的宠物主人、宠物的测试用例,搜索、增加

演练代码