2016-06-13 3 views
-1

Может кто-нибудь помочь, я пытаюсь получить последний элемент xpath для кнопки, представляющей смарт-карту (например, 633597015500042010), которая динамически генерируется, затем нажмите на нее. Я пробовал следующее, но до сих пор не могу найти решение. Название кнопки, которую я собираю захватить, - «Выбрать».Последний элемент для кнопки

driver.findElement (By.xpath ("// div [@ class = 'select-item']/div) [last()]")). Click();

<html class="js flexbox flexboxlegacy canvas canvastext postmessage no-websqldatabase indexeddb hashchange history draganddrop websockets rgba hsla multiplebgs backgroundsize borderimage borderradius boxshadow textshadow opacity cssanimations csscolumns cssgradients no-cssreflections csstransforms csstransforms3d csstransitions fontface generatedcontent video audio localstorage sessionstorage webworkers applicationcache desktop" lang="en"> 
<head> 
<body class="rwd"> 
<noscript> <iframe src="//www.googletagmanager.com/ns.html?id=GTM-KZFHXV" height="0" width="0" style="display:none;visibility:hidden"></iframe> </noscript> 
<script> 
<div class="page-wrapper page-wrapper-delivery"> 
<div> 
<div class="wrapper-wide wrapper-header" style="position: relative;"> 
<div class="wrapper-wide wrapper-body"> 
<div class="wrapper"> 
<div class="main"> 
<a id="skipnav" tabindex="-1"></a> 
<div class="row hidden"> 
<div class="row"> 
<div class="row"> 
<div class="cf"></div> 
<div class="row"> 
<div class="pane base12"> 
<form class="cf javascript-validate" novalidate="novalidate"> 
<div class="component checkout-page cf"> 
<div class="component ticket-item-base ticket-item-checkout cf"> 
<div class="cf"> 
<div class="component smart-card-checkout cf"> 
<div class="component vertical-accordion stag-standard-accordion checkout-accordion parent-accordion cf"> 
<ul id="accordion-1" class="accordion single-display"> 
<li class="cf open-li"> 
<a class="toggle-link open" href="#"> Select/request a smart card </a> 
<a class="edit-link secondary-toggle-link" href="#">Edit</a> 
<div class="accordion-drop" style="display: block;"> 
<div class="accordion-content cf"> 
<div class="component vertical-accordion stag-standard-accordion child-accordion cf"> 
<ul id="accordion-2" class="accordion multi-display"> 
<li class="cf open-li"> 
<a class="toggle-link open" href="#">Select a smart card</a> 
<div class="accordion-drop" style="display: block;"> 
<div class="accordion-content cf"> 
<div class="info-box"> 
<form class="select-card-form" novalidate="" method="post"> 
<input type="hidden" value="SmartCardSelect_6822d668-9a46-4b51-910d-98c701d43fa2" name="FormName"> 
<input type="hidden" value="e3429d28-e838-4247-9a4e-0b3dc53cf1a7" name="CardId"> 
<div class="select-item "> 
<p>Smart card 1</p> 
<button class="submit-btn uniform-button button-smaller button-orange select-address" data-id="633597015500041558"> 
</div> 
</form> 
<form class="select-card-form" novalidate="" method="post"> 
<form class="select-card-form" novalidate="" method="post"> 
<form class="select-card-form" novalidate="" method="post"> 
<form class="select-card-form" novalidate="" method="post"> 
<form class="select-card-form" novalidate="" method="post"> 
<form class="select-card-form" novalidate="" method="post"> 
<input type="hidden" value="SmartCardSelect_6822d668-9a46-4b51-910d-98c701d43fa2" name="FormName"> 
<input type="hidden" value="94888c8a-815c-484e-808c-8d400694b9e9" name="CardId"> 
<div class="select-item "> 
<p>Smart card 7</p> 
<button class="submit-btn uniform-button button-smaller button-orange select-address" data-id="633597015500042010"> 
<span>Select</span> 
</button> 
</div> 
</form> 
<form class="select-card-form" novalidate="" method="post"> 
<form class="select-card-form" novalidate="" method="post"> 
<form class="select-card-form" novalidate="" method="post"> 
</div> 
</div> 
</li> 
<li class="cf"> 
<li class="cf"> 
</ul> 
</div> 
</div> 
</div> 
</li> 
</ul> 
</div> 
</div> 
<div class="component checkout-date-select cf no-end-date"> 
</div> 
</div> 
</div> 
</div> 
<div class="row"> 
<div class="row"> 
</div> 
</div> 
</div>`enter code here` 
+0

Любой вокруг? ..- :) – AzMar

+1

HTML отступа поможет. Html не кажется полным, и вам не нужно публиковать весь html, только основной раздел с нужным вам элементом. Попробуйте идентифицировать уникального родителя для вашего элемента, а также попробуйте следующее: // span [text() = 'Выбрать']/parent :: button – lauda

ответ

0

Согласно предоставленному HTML-коду требуемый элемент находится внутри кадра, поэтому нам нужно переключиться на этот фрейм. После переключения в рамку, найдите эту кнопку

В коде используется неверный xpath. Это должно быть, как это

(//div[@class='select-item']/button)[last()] 

считая, ваш пытаются найти местоположение следующего элемента

<button class="submit-btn uniform-button button-smaller button-orange select-address" data-id="633597015500042010"> 
+0

Я попытался переключиться на кадр следующим образом, но все же не могу заставить его работать - любая идея почему? : driver.switchTo(). frame ("submit-btn равномерная кнопка-кнопка-меньшая кнопка-оранжевый выбор-адрес"); driver.findElement (By.xpath ("// ДИВ [@ класс = 'выберите пункт-']/кнопка) [последняя]")) нажмите(). – AzMar

+0

Нет .. это неправильно. Рамка в HTML начинается с