﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>IT博客-金鳞-文章分类-Selenium </title><link>http://www.cnitblog.com/chenxin9821/category/7962.html</link><description>目标-&gt;软件测试架构师</description><language>zh-cn</language><lastBuildDate>Wed, 28 Sep 2011 09:10:58 GMT</lastBuildDate><pubDate>Wed, 28 Sep 2011 09:10:58 GMT</pubDate><ttl>60</ttl><item><title>Selenium Reference</title><link>http://www.cnitblog.com/chenxin9821/articles/53219.html</link><dc:creator>金鳞</dc:creator><author>金鳞</author><pubDate>Mon, 29 Dec 2008 09:16:00 GMT</pubDate><guid>http://www.cnitblog.com/chenxin9821/articles/53219.html</guid><wfw:comment>http://www.cnitblog.com/chenxin9821/comments/53219.html</wfw:comment><comments>http://www.cnitblog.com/chenxin9821/articles/53219.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/chenxin9821/comments/commentRss/53219.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/chenxin9821/services/trackbacks/53219.html</trackback:ping><description><![CDATA[<table style="MARGIN-BOTTOM: 5px" cellSpacing=0 width="100%">
    <tbody>
        <tr>
            <td vAlign=top align=left><span class=smalltext>Added by <a href="http://wiki.springside.org.cn/display/~springside"><u><font color=#0000ff>SpringSideTeam</font></u></a>, last edited by Anonymous on 2007-04-09 &nbsp;(<a href="http://wiki.springside.org.cn/pages/diffpages.action?pageId=114&amp;originalId=1908"><u><font color=#0000ff>view change</font></u></a>)
            <style type=text/css>
            div.auto_complete {
            width: 350px;
            background: #fff;
            }
            div.auto_complete ul {
            border: 1px solid #888;
            margin: 0;
            padding: 0;
            width: 100%;
            list-style-type: none;
            }
            div.auto_complete ul li {
            margin: 0;
            padding: 3px;
            }
            div.auto_complete ul li.selected {
            background-color: #ffb;
            }
            div.auto_complete ul strong.highlight {
            color: #800;
            margin: 0;
            padding: 0;
            }
            </style>
            <!-- Delay the loading of the external javascript file needed for labels (as it takes too long to load and visibly holds loading of the page body) --><!-- To do this without javascript errors over undefined functions, we need to declare stubs here (that are overrided later by the proper implementations) -->
            <script language=JavaScript type=text/javascript>
            function doAddLabel(hideTextfieldAfterAddParam)
            {
            // stub
            }
            function onAddLabel()
            {
            // stub
            }
            function showLabelsInput()
            {
            // stub
            }
            </script>
            <!-- This is a hack to work around an apparent SiteMesh bug - http://jira.opensymphony.com/browse/SIM-198 --><span class=error><span class=errorMessage id=errorSpan></span></span>
            <form style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px" name=addLabelForm onsubmit="doAddLabel(false); return false;" action="">
                <div style="FLOAT: left">Labels:&nbsp;</div>
                <div id=labelsInfo style="FLOAT: left; WIDTH: 90%"><span id=labelsList>(None) </span><span class=inline-control-link id=editLabelsLink style="DISPLAY: inline"><a onclick="onAddLabel(); showLabelsInput(); return false;" href=""><u><font color=#0000ff>EDIT</font></u></a> </span></div>
                <br clear=all><!-- Do not remove this line-break. You will make Safari cry. -->
                <div id=labelInputSpan style="CLEAR: both; DISPLAY: none"><br>
                <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 8px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 8px; PADDING-BOTTOM: 8px; BORDER-LEFT: #cccccc 1px solid; PADDING-TOP: 8px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #f0f0f0; align: center">
                <div id=labelOperationErrorContainer style="DISPLAY: none"><span class=error><span class=errorMessage id=labelOperationErrorMessage></span></span></div>
                <table width="100%">
                    <tbody>
                        <tr>
                            <td>
                            <div class=formtitle style="FONT-SIZE: 13px; PADDING-BOTTOM: 3px">Add Labels</div>
                            </td>
                            <td align=right>
                            <div id=waitImageAndStatus style="DISPLAY: none; HEIGHT: 16px"><img alt="Wait Image" src="http://wiki.springside.org.cn/images/icons/wait.gif" align=absMiddle border=0>&nbsp;<span class=smalltext id=labelOperationStatus style="VERTICAL-ALIGN: middle"></span></div>
                            </td>
                        </tr>
                        <tr>
                            <td width="50%">Enter labels to add to this page:<br><input class=monospaceInput id=labelName size=40 name=labelsString autocomplete="off"> <input onclick="doAddLabel(false); return false;" type=submit value=Add><input onclick="doAddLabel(true); return false;" type=button value=Done>
                            <div class=auto_complete id=labelsAutocompleteList style="DISPLAY: none"></div>
                            <div class=smalltext><em>Tip:</em> Looking for a label? Just start typing. </div>
                            </td>
                            <td vAlign=top width="50%">
                            <div id=suggestedLabelsSpan></div>
                            </td>
                        </tr>
                    </tbody>
                </table>
                </div>
                </div>
            </form>
            <script type=text/javascript>
            // if there is javascript support, enable the [Edit] link that enables AJAX label adding/removing functionality
            if (document.getElementById('editLabelsLink'))
            {
            document.getElementById('editLabelsLink').style.display = 'inline';
            }
            </script>
            </span></td>
            <td vAlign=top align=right>
            <script type=text/javascript><!--
            google_ad_client = "pub-2429212051207422";
            /* Wiki页头 */
            google_ad_slot = "8579584039";
            google_ad_width = 234;
            google_ad_height = 60;
            //-->
            </script>
            <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type=text/javascript>
            </script>
            <script src="http://googleads.g.doubleclick.net/pagead/test_domain.js"></script>
            <script src="http://pagead2.googlesyndication.com/pagead/render_ads.js"></script>
            <script>window.google_render_ad();</script>
            <iframe name=google_ads_frame marginWidth=0 marginHeight=0 src="http://googleads.g.doubleclick.net/pagead/ads?client=ca-pub-2429212051207422&amp;dt=1230541952796&amp;lmt=1230541952&amp;output=html&amp;slotname=8579584039&amp;correlator=1230541952796&amp;url=http%3A%2F%2Fwiki.springside.org.cn%2Fdisplay%2Fspringside%2FSelenium%2BReference&amp;eid=6083027&amp;ea=0&amp;ref=http%3A%2F%2Fwiki.springside.org.cn%2Fdisplay%2Fspringside%2FSeleniumReference&amp;frm=0&amp;ga_vid=1118477918.1230541953&amp;ga_sid=1230541953&amp;ga_hid=1430072106&amp;flash=10.0.12.36&amp;u_h=1024&amp;u_w=1280&amp;u_ah=994&amp;u_aw=1280&amp;u_cd=32&amp;u_tz=480&amp;u_his=1&amp;u_java=true&amp;dtd=47" frameBorder=0 width=234 scrolling=no height=60 allowTransparency></iframe></td>
            <td vAlign=top align=right></td>
        </tr>
    </tbody>
</table>
<div class=wiki-content><!-- wiki content -->
<p><strong>一、&nbsp;</strong><strong>&nbsp;Commands (命令)</strong></p>
<ul>
    <li><strong>Action</strong><br>对当前状态进行操作<br>失败时，停止测试
    <li><strong>Assertion</strong><br>校验是否有产生正确的值
    <li><strong>Element Locators</strong><br>指定HTML中的某元素
    <li><strong>Patterns</strong><br>用于模式匹配 </li>
</ul>
<p><strong>1.&nbsp;Element Locators (元素定位器)</strong></p>
<ul>
    <li><strong>id=id</strong><br>id locator 指定HTML中的唯一id的元素&nbsp;
    <li><strong>&nbsp;name=name</strong><br>name locator指定 HTML中相同name的元素中的第一个元素
    <li><strong>&nbsp;identifier=id</strong><br>identifier locator 首先查找HTML是否存在该id的元素, 若不存在，查找第一个该name的元素&nbsp;
    <li><strong>dom=javascriptExpression</strong><br>dom locator用JavaScript表达式来定位HTML中的元素,注意必须要以"document"开头<br>例如:<br>dom=document.forms['myForm'].myDropdown<br>dom=document.images[56]
    <li><strong>&nbsp;xpath=xpathExpression</strong><br>xpath locator用 XPath 表达式来定位HTML中的元素,必须注意要以"//"开头<br>例如：<br>xpath=//img[@alt='The image alt text']<br>xpath=//table[@id='table1']//tr[4]/td[2]
    <li><strong>&nbsp;link=textPattern</strong><br>link locator 用link来选择HTML中的连接或锚元素<br>例如:<br>link=The link text
    <li>在没有locator前序的情况下 Without a locator prefix, Selenium uses:<br>如果以"document."开头，则默认是使用 dom locator，如果是以"//"开头，则默认使用xpath locator,其余情况均认作identifier locator </li>
</ul>
<p><strong>2.&nbsp;String Matching Patterns (字符串匹配模式)</strong></p>
<ul>
    <li><strong>glob:patthern</strong><br>glob模式，用通配符"*"代表任意长度字符，"?"代表一个字符
    <li><strong>regexp:regexp</strong><br>正则表达式模式，用JavaScript正则表达式的形式匹配字符串
    <li><strong>exact:string</strong><br>精确匹配模式，精确匹配整个字符串，不能用通配符
    <li>在没有指定字符串匹配前序的时候，selenium 默认使用golb 匹配模式 </li>
</ul>
<p><strong>3.&nbsp;Select Option Specifiers (Select选项指定器)</strong></p>
<ul>
    <li><strong>label=labelPattern</strong><br>通过匹配选项中的文本指定选项<br>例如：label=regexp:^[Oo]ther
    <li><strong>value=valuePattern</strong><br>通过匹配选项中的值指定选项<br>例如：value=other
    <li><strong>id=id</strong><br>通过匹配选项的id指定选项<br>例如: id=option1
    <li><strong>index=index</strong><br>通过匹配选项的序号指定选项，序号从0开始<br>例如：index=2
    <li>在没有选项选择前序的情况下，默认是匹配选项的文本 </li>
</ul>
<p><strong>二、&nbsp;Actions</strong><br>描述了用户所会作出的操作。<br>Action 有两种形式: action和actionAndWait, action会立即执行，而actionAndWait会假设需要较长时间才能得到该action的相响，而作出等待，open则是会自动处理等待时间。</p>
<ul>
    <li><strong>click</strong><br><strong>click(elementLocator)</strong><br>-&nbsp;点击连接,按钮，复选和单选框<br>-&nbsp;如果点击后需要等待响应，则用"clickAndWait"<br>-&nbsp;如果是需要经过JavaScript的alert或confirm对话框后才能继续操作，则需要调用verify或assert来告诉Selenium你期望对对话框进行什么操作。
    <table class=confluenceTable>
        <tbody>
            <tr>
                <td class=confluenceTd>click </td>
                <td class=confluenceTd>aCheckbox </td>
                <td class=confluenceTd>&nbsp;</td>
            </tr>
            <tr>
                <td class=confluenceTd>clickAndWait </td>
                <td class=confluenceTd>submitButton </td>
                <td class=confluenceTd>&nbsp;</td>
            </tr>
            <tr>
                <td class=confluenceTd>clickAndWait </td>
                <td class=confluenceTd>anyLink </td>
                <td class=confluenceTd>&nbsp;</td>
            </tr>
        </tbody>
    </table>
    <li><strong>open</strong><br><strong>open(url)</strong><br>-&nbsp;在浏览器中打开URL,可以接受相对和绝对路径两种形式<br>-&nbsp;注意：该URL必须在与浏览器相同的安全限定范围之内
    <table class=confluenceTable>
        <tbody>
            <tr>
                <td class=confluenceTd>open </td>
                <td class=confluenceTd>/mypage </td>
                <td class=confluenceTd>&nbsp;</td>
            </tr>
            <tr>
                <td class=confluenceTd>open </td>
                <td class=confluenceTd><span class=nobr><a title="Visit page outside Confluence" href="http://localhost/" rel=nofollow><u><font color=#0000ff>http://localhost/<sup><img class=rendericon height=7 alt="" src="http://wiki.springside.org.cn/images/icons/linkext7.gif" width=7 align=absMiddle border=0></sup></font></u></a></span> </td>
                <td class=confluenceTd>&nbsp;</td>
            </tr>
        </tbody>
    </table>
    <li><strong>type</strong><br><strong>&nbsp;type(inputLocator, value)</strong><br>-&nbsp;模拟人手的输入过程，往指定的input中输入值<br>-&nbsp;也适合给复选和单选框赋值<br>-&nbsp;在这个例子中，则只是给钩选了的复选框赋值，注意，而不是改写其文本
    <table class=confluenceTable>
        <tbody>
            <tr>
                <td class=confluenceTd>type </td>
                <td class=confluenceTd>nameField </td>
                <td class=confluenceTd>John Smith </td>
            </tr>
            <tr>
                <td class=confluenceTd>typeAndWait </td>
                <td class=confluenceTd>textBoxThatSubmitsOnChange </td>
                <td class=confluenceTd>newValue </td>
            </tr>
        </tbody>
    </table>
    <li><strong>select</strong><br><strong>select(dropDownLocator, optionSpecifier)</strong><br>-&nbsp;根据optionSpecifier选项选择器来选择一个下拉菜单选项<br>-&nbsp;如果有多于一个选择器的时候，如在用通配符模式，如"f*b*",或者超过一个选项有相同的文本或值，则会选择第一个匹配到的值
    <table class=confluenceTable>
        <tbody>
            <tr>
                <td class=confluenceTd>select&nbsp; </td>
                <td class=confluenceTd>dropDown </td>
                <td class=confluenceTd>Australian Dollars </td>
            </tr>
            <tr>
                <td class=confluenceTd>select&nbsp; </td>
                <td class=confluenceTd>dropDown </td>
                <td class=confluenceTd>index=0 </td>
            </tr>
            <tr>
                <td class=confluenceTd>selectAndWait </td>
                <td class=confluenceTd>currencySelector </td>
                <td class=confluenceTd>value=AUD </td>
            </tr>
            <tr>
                <td class=confluenceTd>selectAndWait </td>
                <td class=confluenceTd>currencySelector </td>
                <td class=confluenceTd>label=Auslian D*rs </td>
            </tr>
        </tbody>
    </table>
    <li>&nbsp;<strong>goBack,close</strong><br><strong>goBack()</strong><br>模拟点击浏览器的后退按钮<br><strong>close()</strong><br>模拟点击浏览器关闭按钮
    <li><strong>selectWindow</strong><br><strong>select(windowId)</strong><br>-&nbsp;选择一个弹出窗口<br>-&nbsp;当选中那个窗口的时候，所有的命令将会转移到那窗口中执行
    <table class=confluenceTable>
        <tbody>
            <tr>
                <td class=confluenceTd>selectWindow </td>
                <td class=confluenceTd>myPopupWindow </td>
                <td class=confluenceTd>&nbsp;</td>
            </tr>
            <tr>
                <td class=confluenceTd>selectWindow </td>
                <td class=confluenceTd>null </td>
                <td class=confluenceTd>&nbsp;</td>
            </tr>
        </tbody>
    </table>
    <li><strong>pause</strong><br><strong>pause(millisenconds)</strong><br>-&nbsp;根据指定时间暂停Selenium脚本执行<br>-&nbsp;常用在调试脚本或等待服务器段响应时
    <table class=confluenceTable>
        <tbody>
            <tr>
                <td class=confluenceTd>pause </td>
                <td class=confluenceTd>5000 </td>
                <td class=confluenceTd>&nbsp;</td>
            </tr>
            <tr>
                <td class=confluenceTd>pause </td>
                <td class=confluenceTd>2000 </td>
                <td class=confluenceTd>&nbsp;</td>
            </tr>
        </tbody>
    </table>
    <li><strong>fireEvent</strong><br>&nbsp;<strong>fireEvent(elementLocatore,evenName)</strong><br>模拟页面元素事件被激活的处理动作
    <table class=confluenceTable>
        <tbody>
            <tr>
                <td class=confluenceTd>fireEvent </td>
                <td class=confluenceTd>textField </td>
                <td class=confluenceTd>focus </td>
            </tr>
            <tr>
                <td class=confluenceTd>fireEvent </td>
                <td class=confluenceTd>dropDown </td>
                <td class=confluenceTd>blur </td>
            </tr>
        </tbody>
    </table>
    <li><strong>waitForCondition</strong><br><strong>waitForCondition(JavaScriptSnippet,time)</strong><br>- 在限定时间内，等待一段JavaScript代码返回true值，超时则停止等待
    <table class=confluenceTable>
        <tbody>
            <tr>
                <td class=confluenceTd>waitForCondition </td>
                <td class=confluenceTd>var value=selenium.getText("foo"); value.match(/bar/); </td>
                <td class=confluenceTd>3000 </td>
            </tr>
        </tbody>
    </table>
    <li><strong>waitForValue</strong><br><strong>waitForValue(inputLocator, value)</strong><br>-&nbsp;等待某input(如hidden input)被赋予某值，<br>-&nbsp;会轮流检测该值，所以要注意如果该值长时间一直不赋予该input该值的话，可能会导致阻塞
    <table class=confluenceTable>
        <tbody>
            <tr>
                <td class=confluenceTd>waitForValue </td>
                <td class=confluenceTd>finishIndication </td>
                <td class=confluenceTd>isfinished </td>
            </tr>
            <tr>
                <td class=confluenceTd>&nbsp;</td>
                <td class=confluenceTd>&nbsp;</td>
                <td class=confluenceTd>&nbsp;</td>
            </tr>
        </tbody>
    </table>
    <li><strong>store,stroreValue</strong><br><strong>store(valueToStore, variablename)</strong><br>保存一个值到变量里。<br>该值可以由自其他变量组合而成或通过JavaScript表达式赋值给变量
    <table class=confluenceTable>
        <tbody>
            <tr>
                <td class=confluenceTd>store </td>
                <td class=confluenceTd>Mr John Smith </td>
                <td class=confluenceTd>fullname </td>
            </tr>
            <tr>
                <td class=confluenceTd>store </td>
                <td class=confluenceTd>$.｛title｝ $.｛firstname｝ $.｛suname｝ </td>
                <td class=confluenceTd>fullname </td>
            </tr>
            <tr>
                <td class=confluenceTd>store </td>
                <td class=confluenceTd>javascript.｛Math.round(Math.PI*100)/100｝ </td>
                <td class=confluenceTd>PI </td>
            </tr>
            <tr>
                <td class=confluenceTd>storeValue </td>
                <td class=confluenceTd>inputLocator </td>
                <td class=confluenceTd>variableName </td>
            </tr>
        </tbody>
    </table>
    <p>把指定的input中的值保存到变量中</p>
    <table class=confluenceTable>
        <tbody>
            <tr>
                <td class=confluenceTd>storeValue </td>
                <td class=confluenceTd>userName </td>
                <td class=confluenceTd>userID </td>
            </tr>
            <tr>
                <td class=confluenceTd>type </td>
                <td class=confluenceTd>userName </td>
                <td class=confluenceTd>$.｛userID｝ </td>
            </tr>
        </tbody>
    </table>
    <li><strong>storeText, storeAttribute</strong><br><strong>storeText(elementLocator, variablename)</strong><br>把指定元素的文本值赋予给变量
    <table class=confluenceTable>
        <tbody>
            <tr>
                <td class=confluenceTd>storeText </td>
                <td class=confluenceTd>currentDate </td>
                <td class=confluenceTd>expectedStartDate </td>
            </tr>
            <tr>
                <td class=confluenceTd>verifyValue </td>
                <td class=confluenceTd>startDate </td>
                <td class=confluenceTd>$.｛expectedStartDate｝ </td>
            </tr>
        </tbody>
    </table>
    <p><strong>storeAttribute(</strong>.｛<strong>｝elementLocator@attributeName,variableName.｛</strong>｝<strong>)</strong><br>把指定元素的属性的值赋予给变量</p>
    <table class=confluenceTable>
        <tbody>
            <tr>
                <td class=confluenceTd>storeAttribute </td>
                <td class=confluenceTd>input1@class&nbsp; </td>
                <td class=confluenceTd>classOfInput1 </td>
            </tr>
            <tr>
                <td class=confluenceTd>verifyAttribute </td>
                <td class=confluenceTd>input2@class </td>
                <td class=confluenceTd>$.｛classOfInput1｝ </td>
            </tr>
        </tbody>
    </table>
    <li><strong>chooseCancel.., answer..</strong><br><strong>chooseCancelOnNextConfirmation()</strong><br>-&nbsp;当下次JavaScript弹出confirm对话框的时候,让selenium选择Cancel<br>-&nbsp;如果没有该命令时，遇到confirm对话框Selenium默认返回true，如手动选择OK按钮一样
    <table class=confluenceTable>
        <tbody>
            <tr>
                <td class=confluenceTd>chooseCancelOnNextConfirmation&nbsp; </td>
                <td class=confluenceTd>&nbsp;</td>
                <td class=confluenceTd>&nbsp;</td>
            </tr>
        </tbody>
    </table>
    <p>-&nbsp;如果已经运行过该命令，当下一次又有confirm对话框出现时，也会同样地再次选择Cancel<br><strong>answerOnNextPrompt(answerString)</strong><br>- 在下次JavaScript弹出prompt提示框时，赋予其anweerString的值，并选择确定</p>
    <table class=confluenceTable>
        <tbody>
            <tr>
                <td class=confluenceTd>answerOnNextPrompt </td>
                <td class=confluenceTd>Kangaroo </td>
                <td class=confluenceTd>&nbsp;</td>
            </tr>
        </tbody>
    </table>
    </li>
</ul>
<p><strong>三、&nbsp;Assertions</strong><br>允许用户去检查当前状态。两种模式: Assert 和 Verify，&nbsp;当Assert失败，则退出测试；当Verify失败，测试会继续运行。</p>
<ul>
    <li><strong>assertLocation, assertTitle</strong><br><strong>assertLocation(relativeLocation)</strong><br>判断当前是在正确的页面
    <table class=confluenceTable>
        <tbody>
            <tr>
                <td class=confluenceTd>verifyLocation </td>
                <td class=confluenceTd>/mypage </td>
                <td class=confluenceTd>&nbsp;</td>
            </tr>
            <tr>
                <td class=confluenceTd>assertLocation </td>
                <td class=confluenceTd>/mypage </td>
                <td class=confluenceTd>&nbsp;</td>
            </tr>
        </tbody>
    </table>
    <li><strong>assertTitle(titlePattern)</strong><br>检查当前页面的title是否正确
    <table class=confluenceTable>
        <tbody>
            <tr>
                <td class=confluenceTd>verifyTitle </td>
                <td class=confluenceTd>My Page </td>
                <td class=confluenceTd>&nbsp;</td>
            </tr>
            <tr>
                <td class=confluenceTd>assertTitle </td>
                <td class=confluenceTd>My Page </td>
                <td class=confluenceTd>&nbsp;</td>
            </tr>
        </tbody>
    </table>
    <li><strong>assertValue</strong><br><strong>assertValue(inputLocator, valuePattern)</strong><br>-&nbsp;检查input的值<br>-&nbsp;对于 checkbox或radio，如果已选择，则值为"on",反之为"off"
    <table class=confluenceTable>
        <tbody>
            <tr>
                <td class=confluenceTd>verifyValue </td>
                <td class=confluenceTd>nameField </td>
                <td class=confluenceTd>John Smith </td>
            </tr>
            <tr>
                <td class=confluenceTd>assertValue </td>
                <td class=confluenceTd>document.forms[2].nameField </td>
                <td class=confluenceTd>John Smith </td>
            </tr>
        </tbody>
    </table>
    <li><strong>assertSelected, assertSelectedOptions</strong><br><strong>assertSelected(selectLocator, optionSpecifier)</strong><br>检查select的下拉菜单中选中的选型是否和optionSpecifer(Select选择选项器)的选项相同
    <table class=confluenceTable>
        <tbody>
            <tr>
                <td class=confluenceTd>verifySelected </td>
                <td class=confluenceTd>dropdown2 </td>
                <td class=confluenceTd>John Smith </td>
            </tr>
            <tr>
                <td class=confluenceTd>verifySelected </td>
                <td class=confluenceTd>dorpdown2 </td>
                <td class=confluenceTd>value=js*123 </td>
            </tr>
            <tr>
                <td class=confluenceTd>assertSelected </td>
                <td class=confluenceTd>document.forms[2].dropDown </td>
                <td class=confluenceTd>label=J*Smith </td>
            </tr>
            <tr>
                <td class=confluenceTd>assertSelected </td>
                <td class=confluenceTd>document.forms[2].dropDown </td>
                <td class=confluenceTd>index=0 </td>
            </tr>
        </tbody>
    </table>
    <li><strong>assertSelectOptions(selectLocator, optionLabelList)</strong><br>-&nbsp;检查下拉菜单中的选项的文本是否和optionLabelList相同<br>-&nbsp;optionLabelList是以逗号分割的一个字符串
    <table class=confluenceTable>
        <tbody>
            <tr>
                <td class=confluenceTd>verifySelectOptions </td>
                <td class=confluenceTd>dropdown2 </td>
                <td class=confluenceTd>John Smith,Dave Bird </td>
            </tr>
            <tr>
                <td class=confluenceTd>assertSelectOptions </td>
                <td class=confluenceTd>document.forms[2].dropdown </td>
                <td class=confluenceTd>Smith,J,Bird,D </td>
            </tr>
        </tbody>
    </table>
    <li><strong>assertText</strong><br><strong>assertText(elementLocator,textPattern)</strong><br>-&nbsp;检查指定元素的文本<br>-&nbsp;只对有包含文本的元素生效<br>-&nbsp;对于Mozilla类型的浏览器，用textContent取元素的文本，对于IE类型的浏览器，用innerText取元素文本
    <table class=confluenceTable>
        <tbody>
            <tr>
                <td class=confluenceTd>verifyText </td>
                <td class=confluenceTd>statusMessage </td>
                <td class=confluenceTd>Successful </td>
            </tr>
            <tr>
                <td class=confluenceTd>assertText </td>
                <td class=confluenceTd>//div[@id='foo']//h1 </td>
                <td class=confluenceTd>Successful </td>
            </tr>
        </tbody>
    </table>
    <li><strong>assertTextPresent, assertAttribute</strong><br><strong>assertTextPresent(text)</strong><br>检查在当前给用户显示的页面上是否有出现指定的文本
    <table class=confluenceTable>
        <tbody>
            <tr>
                <td class=confluenceTd>verifyTextPresent </td>
                <td class=confluenceTd>You are now logged in </td>
                <td class=confluenceTd>&nbsp;</td>
            </tr>
            <tr>
                <td class=confluenceTd>assertTextPresent </td>
                <td class=confluenceTd>You are now logged in </td>
                <td class=confluenceTd>&nbsp;</td>
            </tr>
        </tbody>
    </table>
    <li><strong>assertAttribute(</strong>.｛<strong>｝elementLocator@attributeName.｛</strong>｝<strong>, ValuePattern)</strong><br>检查当前指定元素的属性的值
    <table class=confluenceTable>
        <tbody>
            <tr>
                <td class=confluenceTd>verifyAttribute </td>
                <td class=confluenceTd>txt1@class </td>
                <td class=confluenceTd>bigAndBlod </td>
            </tr>
            <tr>
                <td class=confluenceTd>assertAttribute </td>
                <td class=confluenceTd>document.images[0]@alt </td>
                <td class=confluenceTd>alt-text </td>
            </tr>
            <tr>
                <td class=confluenceTd>verifyAttribute </td>
                <td class=confluenceTd>//img[@id='foo']/alt </td>
                <td class=confluenceTd>alt-text </td>
            </tr>
        </tbody>
    </table>
    <li><strong>assertTextPresent, etc.</strong><br><strong>assertTextPresent(text)</strong><br><strong>assertTextNotPresent(text)</strong><br><strong>assertElementPresent(elementLocator)</strong>
    <table class=confluenceTable>
        <tbody>
            <tr>
                <td class=confluenceTd><strong>&nbsp;verifyElementPresent&nbsp;</strong> </td>
                <td class=confluenceTd><strong>&nbsp;submitButton&nbsp;</strong> </td>
                <td class=confluenceTd><strong>&nbsp;</strong> </td>
            </tr>
            <tr>
                <td class=confluenceTd><strong>&nbsp;assertElementPresent&nbsp;</strong> </td>
                <td class=confluenceTd><strong>&nbsp;//img[@alt='foo']&nbsp;</strong> </td>
                <td class=confluenceTd><strong>&nbsp;</strong> </td>
                <td class=confluenceTd><strong>assertElementNotPresent(elementLocator)</strong> </td>
            </tr>
        </tbody>
    </table>
    <li><strong>assertTable</strong><br><strong>assertTable(cellAddress, valuePattern)</strong><br>-&nbsp;检查table里的某个cell中的值<br>-&nbsp;cellAddress的语法是tableName.row.column, 注意行列序号都是从0开始
    <table class=confluenceTable>
        <tbody>
            <tr>
                <td class=confluenceTd>verifyTable </td>
                <td class=confluenceTd>myTable.1.6 </td>
                <td class=confluenceTd>Submitted </td>
            </tr>
            <tr>
                <td class=confluenceTd>assertTable </td>
                <td class=confluenceTd>results0.2 </td>
                <td class=confluenceTd>13 </td>
            </tr>
        </tbody>
    </table>
    <li><strong>assertVisible, nonVisible</strong><br><strong>assertVisible(elementLocator)</strong><br>-&nbsp;检查指定的元素是否可视的<br>-&nbsp;隐藏一个元素可以用设置css的'visibility'属性为'hidden'，也可以设置'display'属性为'none'
    <table class=confluenceTable>
        <tbody>
            <tr>
                <td class=confluenceTd>verfyVisible </td>
                <td class=confluenceTd>postcode </td>
                <td class=confluenceTd>&nbsp;</td>
            </tr>
            <tr>
                <td class=confluenceTd>assertVisible </td>
                <td class=confluenceTd>postcode </td>
                <td class=confluenceTd>&nbsp;</td>
            </tr>
        </tbody>
    </table>
    <li><strong>assertNotVisible(elementLocator)</strong>
    <table class=confluenceTable>
        <tbody>
            <tr>
                <td class=confluenceTd><strong>&nbsp;verfyNotVisible&nbsp;</strong> </td>
                <td class=confluenceTd><strong>&nbsp;postcode&nbsp;</strong> </td>
                <td class=confluenceTd><strong>&nbsp;</strong> </td>
            </tr>
            <tr>
                <td class=confluenceTd><strong>&nbsp;assertNotVisible&nbsp;</strong> </td>
                <td class=confluenceTd><strong>&nbsp;postcode&nbsp;</strong> </td>
                <td class=confluenceTd><strong>&nbsp;</strong> </td>
            </tr>
        </tbody>
    </table>
    <li><strong>Editable, non-editable</strong><br><strong>assertEditable(inputLocator)</strong><br>检查指定的input是否可以编辑
    <table class=confluenceTable>
        <tbody>
            <tr>
                <td class=confluenceTd>verifyEditable </td>
                <td class=confluenceTd>shape </td>
                <td class=confluenceTd>&nbsp;</td>
            </tr>
            <tr>
                <td class=confluenceTd>assertEditable </td>
                <td class=confluenceTd>colour </td>
                <td class=confluenceTd>&nbsp;</td>
            </tr>
        </tbody>
    </table>
    <li><strong>assertNotEditable(inputLocator)</strong><br>检查指定的input是否不可以编辑
    <li><strong>assertAlert</strong><br><strong>assertAlert(messagePattern)</strong><br>-&nbsp;检查JavaScript是否有产生带指定message的alert对话框<br>-&nbsp;alert产生的顺序必须与检查的顺序一致<br>-&nbsp;检查alert时会产生与手动点击'OK'按钮一样的效果。如果一个alert产生了，而你却没有去检查它，selenium会在下个action中报错。<br>-&nbsp;注意：Selenium 不支持 JavaScript 在onload()事件时 调用alert();在这种情况下，Selenium需要你自己手动来点击OK.
    <li><strong>assertConfirmation</strong><br><strong>assertConfirmation(messagePattern)</strong><br>-&nbsp;检查JavaScript是否有产生带指定message的confirmation对话框和alert情况一样，confirmation对话框也必须在它们产生的时候进行检查<br>-&nbsp;默认情况下，Selenium会让confirm() 返回true, 相当于手动点击Ok按钮的效果。你能够通过chooseCancelOnNextConfirmation命令让confirm()返回false.同样地，如果一个cofirmation对话框出现了，但你却没有检查的话，Selenium将会在下个action中报错<br>-&nbsp;注意：在Selenium的环境下，confirmation对话框框将不会再出现弹出显式对话框<br>-&nbsp;注意：Selenium不支持在onload()事件时调用confirmation对话框，在这种情况下，会出现显示confirmatioin对话框，并需要你自己手动点击。
    <li><strong>&nbsp;assertPrompt</strong><br><strong>assertPrompt(messagePattern)</strong><br>-&nbsp;检查JavaScript是否有产生带指定message的Prompt对话框<br>-&nbsp;你检查的prompt的顺序Prompt对话框产生的顺序必须相同<br>-&nbsp;必须在verifyPrompt之前调用answerOnNextPrompt命令<br>-&nbsp;如果prompt对话框出现了但你却没有检查，则Selenium会在下个action中报错
    <table class=confluenceTable>
        <tbody>
            <tr>
                <td class=confluenceTd>answerOnNextPrompt </td>
                <td class=confluenceTd>Joe </td>
                <td class=confluenceTd>&nbsp;</td>
            </tr>
            <tr>
                <td class=confluenceTd>click </td>
                <td class=confluenceTd>id=delegate </td>
                <td class=confluenceTd>&nbsp;</td>
            </tr>
            <tr>
                <td class=confluenceTd>verifyPrompt </td>
                <td class=confluenceTd>Delegate to who? </td>
                <td class=confluenceTd>&nbsp;</td>
            </tr>
        </tbody>
    </table>
    </li>
</ul>
<p><strong>四、&nbsp;Parameters and Variables</strong><br>参数和变量的声明范围由简单的赋值到JavaScript表达式赋值。<br>Store，storeValue 和storeText 为下次访问保存值。<br>在Selenium内部是用一个叫storeVars的map来保存变量名。</p>
<ul>
    <li><strong>Variable Substitution 变量替换</strong><br>提供了一个简单的方法去访问变量,语法 $.｛xxx｝
    <table class=confluenceTable>
        <tbody>
            <tr>
                <td class=confluenceTd>store </td>
                <td class=confluenceTd>Mr </td>
                <td class=confluenceTd>title </td>
            </tr>
            <tr>
                <td class=confluenceTd>storeValue </td>
                <td class=confluenceTd>nameField </td>
                <td class=confluenceTd>surname </td>
            </tr>
            <tr>
                <td class=confluenceTd>store </td>
                <td class=confluenceTd>$.｛title｝ $.｛suname｝ </td>
                <td class=confluenceTd>fullname </td>
            </tr>
            <tr>
                <td class=confluenceTd>type </td>
                <td class=confluenceTd>textElement </td>
                <td class=confluenceTd>Full name is: $.｛fullname｝ </td>
            </tr>
        </tbody>
    </table>
    <li><strong>&nbsp;JavaScript Evaluation JavaScript赋值</strong><br>你能用JavaScript来构建任何你所需要的值。<br>这个参数是以javascript开头，语法是 javascript.｛'with a trailing'｝。<br>可以通过JavaScript表达式给某元素赋值。
    <table class=confluenceTable>
        <tbody>
            <tr>
                <td class=confluenceTd>store </td>
                <td class=confluenceTd>javascript.｛'merchant'+(new Date()).getTime()｝ </td>
                <td class=confluenceTd>merchantId </td>
            </tr>
            <tr>
                <td class=confluenceTd>type </td>
                <td class=confluenceTd>textElement </td>
                <td class=confluenceTd>javascript.｛storedVars['merchantId'].toUpperCase()｝ </td>
            </tr>
        </tbody>
    </table>
    <li><strong>Generating Unique values 产生唯一值.</strong> &nbsp;<br>问题：你需要唯一的用户名<br>解决办法: 基于时间来产生用户名，如'fred'+(new Date().getTime()) </li>
</ul>
</div>
自：<a href="http://wiki.springside.org.cn/display/springside/Selenium+Reference">http://wiki.springside.org.cn/display/springside/Selenium+Reference</a><br>注：最新的内容以上边的网址更新的内容为主<br><!--
<rdf:rdf xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
<rdf:description
rdf:about="http://wiki.springside.org.cn/display/springside/Selenium+Reference"
dc:identifier="http://wiki.springside.org.cn/display/springside/Selenium+Reference"
dc:title="Selenium Reference"
trackback:ping="http://wiki.springside.org.cn/rpc/trackback/114"/>
</rdf:rdf>
--><!--
Root decorator: all decisions about how a page is to be decorated via the
inline decoration begins here.
--><!--
Switch based upon the context. However, for now, just delegate to a decorator
identified directly by the context.
-->
<img src ="http://www.cnitblog.com/chenxin9821/aggbug/53219.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/chenxin9821/" target="_blank">金鳞</a> 2008-12-29 17:16 <a href="http://www.cnitblog.com/chenxin9821/articles/53219.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>