簡體   English   中英

Selenium:使用序列選擇具有相似屬性的元素

[英]Selenium : Selecting elements with similar properties using sequence

我正在使用 c# 編寫的 selenium 腳本需要一些幫助。

我正在嘗試通過使用“類”屬性單擊一個元素,但問題是,還有另一個類似的元素共享完全相同的屬性,並且這個元素首先出現,因此我的點擊是點擊第一個元素

此外,“類”是該元素唯一可用的屬性。

我要點擊的元素是“progressTerm”class 下的“cam-taxpicker-button”

<div id = "LeftDivision" class = "LeftFrame">
 <div>
  <div class="cam-taxpicker">
    <div class="cam-taxpicker-button"></div>
  </div>
 </div>

 <div class="progressTerm">
  <div class="cam-taxpicker">
   <div class="cam-taxpicker-button"></div>
  </div>
 </div>
</div>

有沒有辦法將這些元素保留在列表中並迭代到第二個元素然后才執行操作? 這是最好的方法嗎?

或者還有其他方法可以執行此操作嗎?

提前謝謝了,

試試下面的代碼

driver.FindElement(By.XPath("//div[@class='cam-taxpicker-button'][2]")).Click()

這里 xpath 中的 [2] 表示您要單擊的第二個元素。

為了找到具有相同屬性的所有元素,您可以使用driver.FindElements(); selenium WebDriver的方法。

因此,在您的情況下,為了找到 class 名稱為“cam-taxpicker-button”的所有元素,您可以執行以下操作:

using System.Collections.ObjectModel;

ReadOnlyCollection<IWebElement> elements = driver.FindElements(By.ClassName("cam-taxpicker-button"));

現在它將為您提供與給定 ClassName 匹配的元素集合,如果只有兩個元素,您可以通過執行以下操作單擊第二個元素: elements[1].Click();

你也可以做driver.FindElement(By.XPath("//div[@class='cam-taxpicker-button'][2]")).Click(); 但在這種情況下,它總是會在給定 class 名稱的整個 DOM 中找到第二個元素。

如果存在多個具有相同 class 名稱的元素,請嘗試以下XPATH ,它將識別最后一個元素。如果只存在一個元素,它也會識別。

(//div[@class='cam-taxpicker-button'])[last()]

誘導WebDriverWait並等待ElementToBeClickable () 並使用上面的 xpath。

WebDriverWait wait = new WebDriverWait(_driver, TimeSpan.FromSeconds(10));
wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementToBeClickable(By.XPath("(//div[@class='cam-taxpicker-button'])[last()]"))).Click();

讓我知道事情的后續。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM