我有一個ul,它包含2個具有相同類名稱和所有其他屬性的列表,除了它們的文本值。見下面基於文本訪問元素 - Selenium WebDriver Java
修改後的代碼的HTML代碼:
<table class="day-form-clause">
<tbody>
<tr>
<td>Buy Assets:</td>
<td>
<div class="btn-group open">
<ul class="dropdown-menu" role="menu">
<li class="ng-scope" ng-repeat="option in beforeOrAfter">
<a class="ng-binding" ng-click="setStartBeforeOrAfter(option)"> Trading Days Before </a>
</li>
<li class="ng-scope" ng-repeat="option in beforeOrAfter">
<a class="ng-binding" ng-click="setStartBeforeOrAfter(option)"> Trading Days After </a>
</li>
</ul>
</div>
</td>
</tr>
<tr>
<td>Sell Assets:</td>
<td>
<div class="btn-group open">
<ul class="dropdown-menu" role="menu">
<li class="ng-scope" ng-repeat="option in beforeOrAfter">
<a class="ng-binding" ng-click="setStartBeforeOrAfter(option)"> Trading Days Before </a>
</li>
<li class="ng-scope" ng-repeat="option in beforeOrAfter">
<a class="ng-binding" ng-click="setStartBeforeOrAfter(option)"> Trading Days After </a>
</li>
</ul>
</div>
</td>
</tr>
</tbody>
</table>
在上面的代碼中,有兩列(購買資產)和(出售資產),而這兩列的各有2名列表。列表(文本,屬性)的內容在兩列中完全相同。現在
,如果我用
driver.find_elements_by_xpath("//*[contains(text(), 'Trading Days Before')]")
或者
WebElement element = driver.findElement(
By.cssSelector("ul.dropdown-menu li:nth-of-type(2) > a[ng-click*='BeforeOrAfter']")
);
這將返回我2層匹配的節點,一個從 'TD =購買資產',並從「TD其他=出售資產」。
如果我只想從'td = Buy Assets'訪問文本(交易日前)該怎麼辦。我將如何實現這一目標?
關於是否存在我的代碼爲2列,就像我上面購買資產代碼塊,並且代碼出售資產同一塊什麼。您的上述解決方案會返回兩個匹配的節點,一個來自購買資產,另一個來自銷售資產 – Uziii