【问题标题】:Last element for button按钮的最后一个元素
【发布时间】:2016-10-13 23:25:19
【问题描述】:

谁能帮忙,我正在尝试获取代表动态生成的智能卡的按钮(例如 633597015500042010)的最后一个 xpath 元素,然后单击它。我尝试了以下方法,但仍然找不到解决方案。我要捕获的按钮的名称是“选择”。

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`

【问题讨论】:

  • 周围有人吗?..-:)
  • html 缩进会有所帮助。 html 似乎并不完整,而且您不必发布所有 html,只需发布​​包含您需要的元素的主要部分。尝试为您的元素标识一个唯一的父级并尝试以下操作://span[text ()='Select']/parent::button

标签: java selenium xpath selenium-webdriver


【解决方案1】:

根据提供的 HTML 代码,所需的元素在框架内,因此我们需要切换到该框架。切换到框架后,寻找那个按钮

在代码中,使用的 xpath 不正确。应该是这样的

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

考虑到,您正在尝试查找以下元素的位置

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

【讨论】:

  • 我尝试如下切换到框架,但仍然无法正常工作 - 知道为什么吗? : driver.switchTo().frame("提交-btn统一按钮-小按钮-橙色选择-地址"); driver.findElement(By.xpath("//div[@class='select-item']/button)[last]")).click();
  • 不..这是错误的。 Frame 在 HTML 中意味着它以
  • 或任何人 - 请检查此代码,因为我仍然没有得到解决方案:driver.switchTo().defaultContent(); driver.switchTo().frame("//iframe[@src='//www.googletagmanager.com/ns.html?id=GTM-KZFHXV']"); driver.findElement(By.xpath("//div[@class='select-item']/button)[last()]")).click();
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-11-28
  • 2012-04-02
  • 1970-01-01
  • 2016-09-29
  • 1970-01-01
  • 2013-02-06
  • 2012-04-08
相关资源
最近更新 更多