在Selenium Webdriver中使用向上和向下箭头从文本框中获取文本

时间:2014-11-04 00:02:02

标签: java selenium selenium-webdriver pagination

我在分页表的页脚中有一个文本框。此文本框包含一个带有向上和向下箭头的文本框,如下图所示。单击下一个上一个按钮时,此文本框值将动态更改。

图片网址:http://i.msdn.microsoft.com/dynimg/IC1380.jpg

这是来自DOM的输入

<div ng-grid-footer="" class="ng-scope"><div ng-show="showFooter" class="ngFooterPanel ng-scope ui-widget-content ui-corner-bottom" ng-class="{'ui-widget-content': jqueryUITheme, 'ui-corner-bottom': jqueryUITheme}" ng-style="footerStyle()" style="width: 1920px; height: 55px;">
<div class="ngTotalSelectContainer">
    <div class="ngFooterTotalItems ngNoMultiSelect" ng-class="{'ngNoMultiSelect': !multiSelect}" style="margin-top: 8px">
        <span class="ngLabel ng-binding">Total Items: 810</span><span ng-show="filterText.length > 0" class="ngLabel ng-binding ng-hide">(Showing Items: 100)</span>
    </div>
    <div class="ngFooterSelectedItems ng-hide" ng-show="multiSelect">
        <span class="ngLabel ng-binding">Selected Items: 0</span>
    </div>
</div>
<div class="ngPagerContainer ngNoMultiSelect" style="float: right; margin-top: 10px" ng-show="enablePaging" ng-class="{'ngNoMultiSelect': !multiSelect}">
    <div style="float:left; margin-right: 10px" class="ngRowCountPicker">
        <span style="float: left; margin-top: 8px" class="ngLabel ng-binding">Page Size:</span>
        <select style="float: left;height: 29px; width: 100px" ng-model="pagingOptions.pageSize" class="ng-valid ng-dirty">
            <!-- ngRepeat: size in pagingOptions.pageSizes --><option ng-repeat="size in pagingOptions.pageSizes" class="ng-scope ng-binding" value="10">10</option><!-- end ngRepeat: size in pagingOptions.pageSizes --><option ng-repeat="size in pagingOptions.pageSizes" class="ng-scope ng-binding" value="25">25</option><!-- end ngRepeat: size in pagingOptions.pageSizes --><option ng-repeat="size in pagingOptions.pageSizes" class="ng-scope ng-binding" value="50">50</option><!-- end ngRepeat: size in pagingOptions.pageSizes --><option ng-repeat="size in pagingOptions.pageSizes" class="ng-scope ng-binding" value="100">100</option><!-- end ngRepeat: size in pagingOptions.pageSizes -->
        </select>
    </div>
    <div style="float:left; margin-right: 10px; line-height:25px" class="ngPagerControl">
        <button class="ngPagerButton" ng-click="pageToFirst()" ng-disabled="cantPageBackward()" title="First Page"><div class="ngPagerFirstTriangle"><div class="ngPagerFirstBar"></div></div></button>
        <button class="ngPagerButton" ng-click="pageBackward()" ng-disabled="cantPageBackward()" title="Previous Page"><div class="ngPagerFirstTriangle ngPagerPrevTriangle"></div></button>

        <!--Input Textbox Which I want to Inspect -->
        <input class="ngPagerCurrent ng-valid-number ng-valid-min ng-valid ng-valid-max ng-dirty" min="1" max="9" type="number" style="width:50px; height: 26px; margin-top: 1px; padding: 0 4px" ng-model="pagingOptions.currentPage">
        <!--END-->

        <button class="ngPagerButton" ng-click="pageForward()" ng-disabled="cantPageForward()" title="Next Page"><div class="ngPagerLastTriangle ngPagerNextTriangle"></div></button>
        <button class="ngPagerButton" ng-click="pageToLast()" ng-disabled="cantPageToLast()" title="Last Page"><div class="ngPagerLastTriangle"><div class="ngPagerLastBar"></div></div></button>

        <button ng-controller="OmniSearchViewCtrl" id="page-summary-help-button" title="Help" class="ngPagerButton ng-scope" ng-click="handlePageSummaryHelpButtonClick()">
            <span class="ptipsicon ptipsicon-help" style="padding:0 6px; float:left"></span>
        </button>

    </div>
</div>

这是Xpath

//*[@id="PageViewContainer"]/div/div[3]/div/div[2]/div[2]/input

我的问题是,我无法从文本框中获取值,因为文本框没有任何属性:value。我尝试使用以下行来获取文本,但它只显示一个空白。但是,我没有得到任何例外

pageNumber = findElement(By.xpath(properties.getString("PageNumber"))).getText();
pageNumber = findElement(By.xpath(properties.getString("PageNumber"))).getAttribute("value");

然而,当我尝试这个时,我没有得到这样的元素发现异常。

pageNumber = findElement(By.xpath("//input[@id=\"PageViewContainer\"]"))).getText();

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

//*[@id="PageViewContainer"]

您的xpath首先搜索id =“PageViewContainer”的元素。您的HTML中没有这样的元素,因此您的xpath不会返回任何内容。

根据您提供的代码段,您可以通过以下方式找到输入元素:

//div[@class='ngPagerControl']/input

然后,您可以使用getText()方法提取文本值。