Selenium 中文API
上一篇 / 下一篇 2012-03-31 10:14:30 / 个人分类:selenium
Selenium 中文API
51Testing软件测试网D)q4t E;C;b1D概念51Testing软件测试网 v6Z+M"lE Qp
51Testing软件测试网$qvg8G/]kLSelenium 通过命令进行驱动。Selenium 可归纳为三种“风格”:动作、辅助和断言。每一个命令调用就是下表中的一行。
#O.j%x#v8gj0H!S0命令 k O6~,q wP0 | 目标 7D$B-rG7b`Z0 | 值 v*} a3?5P)dR0 |
动作(Actions)命令一般用于操作应用程序的状态。它们通过如”点击链接”和”选择选项”的方式进行工作。如果一个动作执行失败,或是有错误,当前的测试将会停止执行。51Testing软件测试网3En1p)s0g6X2bZ(wg
i8d|]2mU0许多动作可以被包含后缀”并等待”的方式进行调用,例如,”点击并等待”。这个后缀告知Selenium,该命令将使浏览器向服务器产生一个请求,并使得Selenium等待加载一个新的页面。
0Yeb+J T"_051Testing软件测试网!c o&t4eD)nl5J辅助(Accessors)用于检查应用程序的状态并将结果存储在变量中。例如”storeTitle”。它们同样可用于自动生成断言。51Testing软件测试网'dVVld
51Testing软件测试网5Q4Kc9qR断言(Assertions)类似于辅助,但它们可以验证应用程序的状态是否同所期望的相一致。例如包括”确认页面标题为X”和”验证该复选框是否被勾选”。51Testing软件测试网n N%w`V4V
-F7~1qB,AbA}0所有的Selenium断言可以被用于三种模式:”assert”, “verify”,和”waitfor”。例如,你可以”assertText”,”verifyText”,及”waitforText”。当”assert”失败时,该测试将终止。当”verify”失败时,该测试将继续执行,并将错误记入日志。这就允许了通过单条”assert”确保应用程序在正确的页面上,而通过一系列的”verify”断言测试表单上的区域值,标签等。
7b3zC@k ?"p0d(_KC:PLSo,L0“waitfor”命令用于等待某些条件变为真(可用于Ajax应用程序的测试)。如果该条件已经为真,他们将立即成功执行。反之,如果该条件不为真,则将失败并暂停测试,直到超过当前所设定的超时时间(参照后面的setTimeout动作)。51Testing软件测试网7@F M e,G3YN Gj&R1f
51Testing软件测试网Mx6M.SV8IdM2c元素定位器(Element Locators)告诉Selenium是向HTML中的哪一个元素发送命令。许多命令需要一个如”target”属性的元素定位器。这其中包括”elementId”和”document. forms[0].element”。在接下来的部分将更详细的描述它们。
m|5R(D yH;~#s0cU0#k;D0S"g f9aNZ0D0式样(Patterns)由于多种因素被使用着,如指定一个输入域的期望值,或识别一个选择选项。Selenium支持许多类型的式样,其中包括正则表达式,所有这些将在接下来的章节中进行更详细的描述。
Mr`Dy;M051Testing软件测试网J:Z2ho/I定义一个类用于运行Selenium命令。
"B{9r3^+l&U'NC&e8x?02|y$g0N,u n0元素定位器(Element Locators)
q2H;Eqzy}07R0f+Sa*l'P3ji9Q0元素定位器(Element Locators)告诉Selenium是向HTML中的哪一个元素发送命令。一个定位器的格式如下:
vYK B+M:s;q] n!CZ0:e ih0M9f&O0 locatorType = argument51Testing软件测试网F!?G0X1f2[{
51Testing软件测试网6p9k9er$lL$S!e我们支持如下写法用于定位元素:
w,vn8M*p7K}0WO1[ bU-]0·identifier=id :根据指定的@id属性选择元素。如果没有匹配的值,则选择第一个@name属性为id的元素。(参照后面)51Testing软件测试网N!^W"WcO uk
VE c@ f^]$A0·id=id :根据指定的@id属性选择元素。
+v2Sd1jf!n;`f:c0,oo&A;f5LjO8]0·name=name :选择第一个根据指定的@name所查找到的元素。
At{&TO:_H `3F051Testing软件测试网 J q2XX&}[)o;JP〇 username
m g^@$Q'Cr051Testing软件测试网h/HeL6u1I〇 name=username51Testing软件测试网\bH9R G~"Gb4c0h+T
5aKDK8NzdH0这里的name可以作为可选项跟在一个或多个元素过滤器的后面,通过空格进行分隔。如果没有指定过滤类型,则假定为value。51Testing软件测试网e7{8wev(}
4Vqb'h{s w(qrb0 〇 name=flavour value=chocolate
I6Egz;K+pG6O1]051Testing软件测试网+U.sN:g C?7l·dom=javascriptExpression: 通过检测指定字符串查找元素。这使得你可以通过 JavaScript贯穿HTML文档对象。注意在这个字符串中返回值不是必须的;仅仅只需要确保这条语句是你块中的最后一条。51Testing软件测试网(J*?QBm6IE
aNnYA-u)Z7[0 〇 dom=document.forms[´myForm´].myDropdown51Testing软件测试网!a+k ?:q_z4i%X
}s tD+m-z0 〇 dom=document.images[56]51Testing软件测试网l X5GL#B
51Testing软件测试网/i3[R b5kP7o〇 dom=function foo() { return document.links[1];}; foo();
"tmJbd1n5d1|#t d051Testing软件测试网5KYX)yDD·xpath=xpathExpression: 通过XPath 表达式定位元素。51Testing软件测试网$}F[y5c[0qyPB
TAcs)y*m3ds0 〇 xpath=//img[@alt=´The image alt text´]
ng\xc\|051Testing软件测试网"z*@"ug Q]3\〇 xpath=//table[@id=´table1´]//tr[4]/td[2]
6h$va:cf*X0H)ct}N6Ec0 〇 xpath=//a[contains(@href, ´#id1´)]
(GI8TkT.v051Testing软件测试网#wST0t:ILek〇 xpath=//a[contains(@href, ´#id1´)]/@class
qPT-L}r0$n@/DNZD0 〇 xpath=(//table[@class=´stylee´])//th[text()=´theHeaderText´]/../td51Testing软件测试网'_o-|*g7[j$\`7C ]
}9]7W9I+LnRp0 〇 xpath=//input[@name=´name2´ and @value=´yes´]51Testing软件测试网xR.c cD9D
!NN wNQNn0 〇 xpath=//*[text()=″right″]51Testing软件测试网8cu'B+N5_ ^I)u Je
x0Gj3|0QV8~0·link=textPattern: 选择所包含的文字匹配指定式样的链接(锚)。
xa%x VX/wd]*a0~8zQi5Fs.L0k"n0 〇 link=The link text
$lq0X5d)?.Fm+RH0zQ/_\ WT'q G _W0·css=cssSelectorSyntax: 通过css选择器选择元素。请查询 CSS2 选择器,CSS3 选择器以获得更多信息。在下载下来的selenium core package中的selenium test suite 里的TestCssLocators test ,你同样可以查看到使用例子。
aE*^BJ051Testing软件测试网 W#ufa4J.E〇 css=a[href=″#id3″]51Testing软件测试网+`7E n Rd-E.nf"\
51Testing软件测试网&R5Ti5Ui〇 css=span#firstChid + span51Testing软件测试网 c@a8Q%Gz{-x
q0oeC [&qc k0当前css选择过滤器支持所有的css1,css2,css3,除了css3中一些虚拟类(:nth-of-type,:nth-last-of- type,:first-of-type,:last-of-type,:only-of- type,:visited,:hover,:active,:focus,:indeterminate)以及虚拟元素(::first- line,::first-letter,::selection,::before,::after)。51Testing软件测试网a}jT'm| D\h!L
]OX^6R6|"Bj"]0如果没有一个显式的前缀,Selenium使用以下默认写法:
5EYIYX5}u |f3P051Testing软件测试网(C;D6m&T7V-`.xt d G·dom,用于开头为″document.″的定位器
FH%I Z3e KGeY0pO@ z0pIK5]'w6G0·xpath,用于开头为″//″的定位器
%@8[r9i!US$M051Testing软件测试网;_[/q;K Km@&{S·identifier,其他
Zq\ jr`"Z4S$R0k:|/|Z&C#R|B0元素过滤器(Element Filters)51Testing软件测试网9ulN~-c-OjCYB lP
51Testing软件测试网7up)d!YAd+J`$`,SS,@'lV0
~:zsk/fl0元素过滤器可以同选择器一起使用,从一堆候选元素中进行筛选。它们当前仅使用于’name’元素选择器。
7C'D BM B6lIi0sV'HI(Q"c)k/J4I_0过滤器看起来更像是选择器,也就是:51Testing软件测试网+br'\3IR5o}
51Testing软件测试网!L{;q\`;].VfilterType=argument
3F pa ]&k'gs8C0"m2K6?{,S:r{J0
s.x-MB&b fVJ0KWqys.X0所支持的元素过滤器为:
6f#[~(LG?.w+@051Testing软件测试网%V`E,O~g$y hDgvalue=valuePattern51Testing软件测试网6h4u!s+F${O-q-J!wl
51Testing软件测试网"C1pJ!FIgF#xp匹配元素时基于它们的值进行匹配。这在对一堆相似命名的关联按钮的筛选中显得尤其有用。51Testing软件测试网9XR1Q.y2i:p%W
51Testing软件测试网 KS7f3h(aZ7w@,_index=index
@5|Y*sIDSB051Testing软件测试网c/~/B.zX#@L7H6s+P选择单个元素基于其在列表中的位置(从0开始)。51Testing软件测试网?1O Ol'M |*lZ
8Z"X%EBub*N:IlV0字符串匹配 式样51Testing软件测试网;Y Mj0| q#a
Pm1n(c5UZ0s7R6y?0有各种各样的式样语法可用于匹配字符串值:51Testing软件测试网n0M$j|5a$m,w5~@]
S%r"n4yb'v0L0·glob:pattern: 用″glob″去匹配一个字符串。″Glob″是一种用于命令行shells的代表性的有限正则表达式语法。在一个glob式样中, ″*″代表任意序列字符集,而″?″则代表任意单个字符。Glob式样匹配整个字符串。51Testing软件测试网*HPa:h^r3]I
M/T#zR@${0·regexp:regexp: 使用正则表达式匹配字符串。可使用所有的JavaScript正则表达式。51Testing软件测试网dg*[juD)O&T
@0aYpS/@&C+_u0如果没有指定式样前缀,Selenium假定其为″glob″式样。51Testing软件测试网yK.j4{A.i&Cg
%Q!`C0Z;{Y-VG0Selenium Actions51Testing软件测试网Ms0\*pn3Y1A%mG
+`(y't&W,@3?"k"[?:e0addLocationStrategy (strategyName, functionDefinition)
"hX C(J5y#SZ0&gxvVXm$t0 为selenium定义一个新的函数用于定位页面上的元素。例如,如果你定义了一个方法″foo″,并运行了click(″foo=blah″ ),我们将运行你的函数,传递给你字符串″blah″,并点击该函数所返回的元素,如果返回为null,则抛出一个″Element not found″的错误。我们将给该函数传递三个参数。
or/B`m0@$l@ zp9m Z$| r B/x0 ·locator: 用户传递过来的字符串51Testing软件测试网&{\8{BWRCiWr
4b)?P9G,rx0 ·inWindow: 当前所选中的窗体
O MMZC051Testing软件测试网;Zz?;Y.B.u+N\·inDocument: 当前所选中的文档
s5Ic*NN^051Testing软件测试网-mt3et%zj(D4T如果未找到相应的元素,则函数必须返回一个null。
8~u'V"L"h~xn0'pZT?'O0参数:
$d#_L\|J z3h0Zw/O$v u8q6Sf f3`0·strategyName – 定义的方法名;只能使用字母[a-zA-Z],不能包含空格或其他标点符号。
"{,?i4\%G08x fD3v r0·functionDefinition – 在JavaScript函数中的一个定义body的字符串。
,Ut,O'z2i wA/f09ne8aq(E0如:return inDocument.getElementById(locator);
uL5c X@ Sc&k051Testing软件测试网jm+t;Y]-]4D4H.VK)BaddSelection (locator, optioLocator)
WjO/|%d!a#wr;Y0c(u:M2G1t0W0为通过使用选择定位器,在一个可多选元素中所选择的集合添加一个selection。@查看#doSelect关于选择定位器的细节。51Testing软件测试网$Y?T|)_
51Testing软件测试网HwSxy+{Ftu!d参数:51Testing软件测试网#k@4v@Z8O#L0R Ke
5r6w^oJ1ZI&m0·locator – 用于指定一个多选框的元素定位器
OOSx"lV;R0'h Y)qx)X+\aHcU!Y2r0·optionLocator – 一个选择定位器(默认为标签)51Testing软件测试网 p@:W;{ jD
7[(Hu3A B'lr7b0allowNativeXpath (allow)
7_xj9pV9} Q+z0.iEhdHQ[r0指定Selenium是否使用XPath的本地浏览执行(如果有可用的本地版本);如果传递的值为″false″,我们将使用pure- JavaScript. xpath 库。使用pure-JS xpath库可以提高xpath元素定位器在不同浏览器中的一致性,但其执行速度将大大低于本地执行。51Testing软件测试网!L\iIi o*_)i%[!^
]/NW-I;ac6y0参数:
q,t'[8{h/]3^V0:N2FB9_5gd L S0·allow – Boolean,true意味着我们更愿意使用本地XPath;false则意味着我们将只使用JS XPath51Testing软件测试网5x&kl-|%^'t_c ?
9~7Ae${X6Z1O@7sU0altKeyDown()51Testing软件测试网W ~rKZ/?x(J
y+K)R9Iw(LZcr0按下alt键并保持其按下状态,直到doAltUp()被调用或一个新的页面被加载。
"S;w#axA0j1`YX)F09y @2j&?zg-s'p4}C0altKeyUp()51Testing软件测试网.vw'Guxe&z8h K$I
51Testing软件测试网0F*gM S|v9f4DI释放alt键
2d-z6m.ls$M0:y E}#o/GS^0answerOnNextPrompt (answer)
,ml5g$X7K6|R|(uPnu0ahA8H.f0mU4O0通知Selenium返回下一次JavaScript. prompt[window.prompt()]所指定的回答字符串。51Testing软件测试网;O(G k*YH/DF{
#zo;NhC.QZ\0参数:51Testing软件测试网1\F3OM'c3a{0o\k%j@
51Testing软件测试网s1k7Z/|&D SC·answer – 对弹出的提示所给与的回答
7b7xV@aQ'T&]f051Testing软件测试网0a^#n] L6Ab3iassignId (locator,identifier)51Testing软件测试网$H#q1dTL#_
51Testing软件测试网\HtLgW Y\临时为指定元素设定一个″id″属性,使你可以在将来使用其ID,以代替缓慢且更复杂的XPath。该ID将在页面重载后消失。51Testing软件测试网 [*A~#}-FKq u
*HA0TL3cQS5k}0参数:51Testing软件测试网;[*z'fG(S$@,q`
.j8S)V8Xr:R4{lsj{~0 ·locator – 指向某个元素的元素定位器
3s-`1m Ng051Testing软件测试网bq]:dwgTUEun0r·identifier – 为指定元素作为ID使用的字符串
2z/`e$] [C%r051Testing软件测试网)M{|_ mH'P+M*bbreak()51Testing软件测试网!ZU1W|5v,\F
'P S/s/YF0暂停当前正在进行的测试,并等待用户按下继续按钮。这个命令对于调试非常有用,但使用时要特别小心,因为他将强制暂停自动化测试,直到用户手动操作。51Testing软件测试网{-]G+H ~*w|N
y4Pk-@(^0w$JW1{J0check(locator)51Testing软件测试网,q)vme'sm&H!w
51Testing软件测试网a[)@.WH0JLB勾选一个关联性按钮(checkbox/radio)
xX w h(KF0HB051Testing软件测试网nTXA:x&{Vs,W:P参数:
$zN8z,k%c%JOz051Testing软件测试网4VP6G_Uz·locator – 一个元素定位器
oU JG'R0lK&I;e(lW0chooseCancelOnNextConfirmation()
'x0ef}3[&J051Testing软件测试网k.RR3u2|m b6U?F默认情况下, Selenium的重载window.confirm()函数将返回true,等同于用户手动点击OK;执行该命令后,下一次调用 confirm()将返回false,等同于用户手动点击了Cancel。Selenium对后来的确认动作将继续使用默认行为,自动返回 true(OK),除非/直到你为每个确认动作明确的调用此命令。
7{H'r.Y"U@ aO0hWiw| zS-H0chooseOkOnNextConfirmation()
1[`$]n.B`)Z051Testing软件测试网?Z4x6_\*\q%SXC撤销调用chooseCancelOnNextConfirmation的效果。注意,Selenium的重载window.confirm()函数通常将自动返回true,等同于用户手动点击OK,因此你没有必要使用此命令,除非由于某种原因使你在下一次确认动作前不得不改变你先前的想法。在任意确认动作后,Selenium对后来的确认动作将继续使用默认行为,自动返回true(OK),除非/直到你为每个确认动作明确的调用 chooseCancelOnNextConfirmation()。51Testing软件测试网1m%j p%oQ9Z
51Testing软件测试网+V t^iULclick(locator)
I+fd,x{!w1E"K0rU+yx0L p]O0点击一个链接、按钮、多选框或单选框。如果该点击事件导致了新的页面加载(如同链接通常所作的),将调用waitForPageToLoad。
%p7L'i+r$] x#]0dYOf7{ lE"H0参数:
B/ZXl!oT051Testing软件测试网 a7ojJ7}[·locator -一个元素定位器
Hs-wT0la*@051Testing软件测试网/? hH4}"u!hclickAt(locator,coordString)51Testing软件测试网%N%Hx!S"k
51Testing软件测试网I },R#U/h点击一个链接、按钮、多选框或单选框。如果该点击事件导致了新的页面加载(如同链接通常所作的),将调用waitForPageToLoad。51Testing软件测试网{@4}t8@1]I
51Testing软件测试网L+t#jD QE参数:
az1w;CR{%k7n0"O\2C}JC!U2Q `k0 ·locator -一个元素定位器51Testing软件测试网v+o,fZ2Y
*Z4pb }#s(DO\Y0·coordString – 指定由定位器返回的鼠标事件相关联的元素x,y 坐标(也就是 – 10,20)51Testing软件测试网2F)K-Z Q*y [XJ
kFC*S&|0close()
tC;](UcvL051Testing软件测试网&cI!P6cUH`l模拟用户点击弹出窗体或表单标题栏上的″关闭″按钮。51Testing软件测试网!S@Uts K
EI u"Xs-Ho0controlKeyDown()
m;\B6a U&ciM k051Testing软件测试网D?4j;{k WnnQ按下control键并保持其按下状态,直到doControlUp()被调用或一个新的页面被加载。
4Av af!~8I8J0K/zN,xr*m0controlKeyUp()
3i0v:bti&j;v0x:A{^eWB0释放control键51Testing软件测试网1_Q?,d;y,V
*f \@-F|a0createCookie(nameValuePair,optionsString)
9r L)c ^Pe+b3Dk051Testing软件测试网$mrwc+PJ5g1m;pp创建一个新的cookie,除非你清楚的指定该cookie的路径,否则其路径和域将与当前测试的页面相同。51Testing软件测试网@(dt\0z9zx.]3QZ+l
"UpFt3e0参数:
@:z`r:^%JLBzd0.yn*L8j,Z3u9P0 ·nameValuePair – 该cookie的名称和值,使用如下格式″name=value″
R`zPk051Testing软件测试网U-s9eJ#b}·optionsString – 该cookie的选项。当前支持的选项包括’path’和’max_age’。optionsString的格式为”path=/path/,max_age=60”。选项的顺序无关紧要。51Testing软件测试网q-al-P3k L t'sT
51Testing软件测试网,Lr y+~QvJdeleteCookie(name,path)
+vh*a$NHE{051Testing软件测试网UZ u,?:|.F1IP0P删除指定路径下的该名称cookie。51Testing软件测试网r8t9P;DF
&\3fPX T0参数:51Testing软件测试网!HX5@,h8\
B)T*}&o8?0uI0 ·name – 被删除cookie的名称
"e:E.^sc vc8z9m051Testing软件测试网XlO+Nh"g%YAW·path – 被删除cookie的路径属性51Testing软件测试网,n,Hs3[3~^cX:}
'c@tzKs0doubleClick(locator)51Testing软件测试网V BU+]D
d7^Th$L6I0双击一个链接、按钮、多选框或单选框。如果该双击事件导致了新的页面加载(如同链接通常所作的),将调用waitForPageToLoad。51Testing软件测试网x {g:ty(A+b i
51Testing软件测试网 ToM!P/g:g(RAfY参数:
:c,]z-kNt6fA%\051Testing软件测试网$iW(VJF(P7gi-g·locator - 一个元素定位器
9[gM#{"u}/t4C/U0.|X9J6m7bM0doubleClickAt(locator,coordString)
%Y;zqCGq#Ce9I051Testing软件测试网0Z,N zQ/{Lm-b双击一个链接、按钮、多选框或单选框。如果该双击事件导致了新的页面加载(如同链接通常所作的),将调用waitForPageToLoad。
z;Pgt7N:EL/{0psr s,t$R2f4Px0参数:51Testing软件测试网 };q]QNw0N!oA
n lw }q-h0 ·locator - 一个元素定位器51Testing软件测试网[ W0b"o~k%c Q
#W$f"E L0g {\0·coordString – 指定由定位器返回的鼠标事件相关联的元素x,y 坐标(也就是 – 10,20)51Testing软件测试网 sA C7`*A$?4NgOd.X
51Testing软件测试网4Di]/H:?2y|L*kdragAndDrop(locator,movementsString)51Testing软件测试网:i|"g*E*B/@:k
51Testing软件测试网*L1[@+Q8LN拖动元素一定的距离并放下
iw H/\]i4u051Testing软件测试网4M|c#B2|"z参数:
wq _j,_*cQ c3k0