2015-08-31 1 views
-1

Я пишу тестовый скрипт в selenium webdriver с помощью javascript.Количество элементов, использующих xpath() в javascript на selenium webdriver

Я использую мокко и фантом JS.

Я хочу сосчитать итоговое число. от <li> в <ul> с определенным идентификатором.

Я использую этот скрипт:

var majorSize = driver.findElements(By.xpath("//ul[contains(@id, 'side-menu')]/li[not(contains(@class, 'nav-header'))]")).size(); 
console.log(majorSize); 

Я использовал ссылку из this

Но я получаю сообщение об ошибке:

TypeError: undefined is not a function 

В JavaScript, я могу использовать этот код также:

driver.findElements(By.xpath("//ul[contains(@id, 'side-menu')]/li[not(contains(@class, 'nav-header'))]")).then(function(majorSize) 
{ 
    console.log(majorSize.legth) 
}); 
console.log(majorSize.legnth); 

Вышеупомянутый скрипт имеет область majorLink с функцией then(). Поэтому его нельзя использовать снаружи. Но мне нужно, чтобы он использовался и снаружи.

Если я определяю что-то вроде var majorSize, то он также отображает 0 вне функции then().

Что я делаю?

Вот HTML код:

<ul id="side-menu" class="nav"> 
    <li class="nav-header"> 
    <img class="logo" alt="Track Revenue" src="/images/3c4939d.png"> 
    <div class="logo-element"> TR </div> 
    </li> 
    <li class=""> 
    <a href="#home"> 
    <i class="fa fa-bolt"></i> 
    <span class="nav-label">Tr Admin Menu</span> 
    <span class="fa arrow"></span> 
    </a> 
    <ul class="nav nav-second-level collapse" aria-expanded="false" style="height: 0px;"> 
     <li> 
     <a href="/admin/user/">All Users</a> 
     </li> 
     <li> 
     <a href="/admin/company/">All Companies</a> 
     </li> 
     <li> 
     <a href="/admin/device/">Devices</a> 
     </li> 
     <li> 
     <a href="/admin/email/">Send Email</a> 
     </li> 
     <li> 
     <a href="/admin/impersonate">Impersonate User</a> 
     </li> 
     <li> 
     <a href="/admin/encrypttest">Test Encryption</a> 
     </li> 
    </ul> 
    </li> 
    <li class=""> 
    <a href="#home"> 
    <i class="fa fa-th-large"></i> 
    <span class="nav-label">Campaigns</span> 
    <span class="fa arrow"></span> 
    </a> 
    <ul class="nav nav-second-level collapse" aria-expanded="false" style="height: 0px;"> 
    <li> 
    <a href="http://demotest.com.co/main/account/campaign_overview.php">Overview</a> 
     </li> 
     <li> 
     <a href="http://demotest.com.co/main/account/campaign_update_cpc.php">CPC Update</a> 
     </li> 
     <li> 
     <a href="http://demotest.com.co/main/account/campaign_update_subids.php">SubID Update</a> 
     </li> 
     <li> 
     <a href="http://demotest.com.co/main/account/campaign_v2.php">Add Campaign</a> 
     </li> 
    </ul> 
    </li> 
    <li> 
    <a href="#home"> 
    <i class="fa fa-bar-chart-o"></i> 
    <span class="nav-label">Stats</span> 
    <span class="fa arrow"></span> 
    </a> 
    <ul class="nav nav-second-level collapse"> 
     <li> 
     <a href="http://demotest.com.co/main/account/stats_campaign_v2.php">Campaign Stats</a> 
     </li> 
     <li> 
     <a href="http://demotest.com.co/main/account/stats_week_day_v2.php">Week/Day Parting Stats</a> 
     </li> 
    </ul> 
    </li> 
    <li> 
    <a href="#home"> 
    <i class="fa fa-files-o"></i> 
    <span class="nav-label">Reports</span> 
    <span class="fa arrow"></span> 
    </a> 
    <ul class="nav nav-second-level collapse"> 
     <li> 
     <a href="http://demotest.com.co/main/account/report_custom.php">Custom Data Reports</a> 
     </li> 
     <li> 
     <a href="http://demotest.com.co/main/account/report_subid.php">SubID Analysis Report</a> 
     </li> 
     <li> 
     <a href="http://demotest.com.co/main/account/completed_report.php">Scheduled Reports</a> 
     </li> 
    </ul> 
    </li> 
    <li> 
    <a href="#home"> 
    <i class="fa fa-cog"></i> 
    <span class="nav-label">Settings</span> 
    <span class="fa arrow"></span> 
    </a> 
    <ul class="nav nav-second-level collapse"> 
     <li> 
     <a href="/profile/">Account</a> 
     </li> 
     <li> 
     <a href="/plan/">Plan Management</a> 
     </li> 
     <li> 
     <a href="http://demotest.com.co/main/account/settings_groups.php">Campaign Groups</a> 
     </li> 
     <li> 
     <a href="http://demotest.com.co/main/account/settings_network.php">Affiliate Networks</a> 
     </li> 
     <li> 
     <a href="http://demotest.com.co/main/account/settings_sources.php">Traffic Source</a> 
     </li> 
     <li> 
     <a href="/manage/user/">Manage Users</a> 
     </li> 
     <li> 
     <a href="/manage/company/">Manage Company</a> 
     </li> 
     <li> 
     <a href="http://demotest.com.co/main/account/settings_rules.php">Blocking & Filter Rules</a> 
     </li> 
     <li> 
     <a href="http://demotest.com.co/main/account/domains.php">Domains</a> 
     </li> 
     <li> 
     <a href="http://demotest.com.co/main/account/campaign_archive.php">Campaign Maintenance</a> 
     </li> 
    </ul> 
    </li> 
</ul> 
+0

Я уже пробовал это, сэр. Его отображение не определено. @ har07 –

+0

не могли бы вы поставить этот html-код с вопросом? Это под javascript? IFrame? –

+0

@HelpingHands, я добавил скрипт HTML, сэр. –

ответ

-1

Если я правильно понимаю, вы хотите, чтобы все LI с (и только LI S), которые являются дети UL с id = side-menu. Это верно? Это на Java, но, надеюсь, вы можете перевести его.

List<WebElement> lis = driver.findElements(By.cssSelector("#side-menu > li")); 
System.out.println(lis.size()); 

селектор Этот CSS означает найти элемент с идентификатором (#) из бокового меню, которое имеет детей LI с. Это прямые дети, а не потомки.

+0

Оставьте комментарий, когда вы downvote.Если вы downvoting, потому что это не phantomJS, это не так, как это сложно перевести, это просто скопировать/вставить CSS-селектор и, вероятно, поместить 'var', где' List 'was ... oh and put' .length' вместо '.size()'. – JeffC

+0

Я не ответил на ваш ответ. Кстати, я пробовал и с .lth также. Его заявление также не определено. –

+0

Вы опечатали там с '. lenth' ... вы на самом деле пытаетесь «.length»? – JeffC