簡體   English   中英

如何從下拉列表中選擇值(Selenium C#)

[英]How to select value from the drop down list (Selenium C#)

我需要幫助,如何從下拉列表中選擇一個值,我正在使用SeleniumC#上編程,並且總是收到以下錯誤:

元素應已選擇但為span

我的代碼是:

internal static void SelectDD()
{
    SelectElement xxx= new SelectElement(driver.FindElement(By.XPath("/html/body/div[1]/section/div[1]/div[2]/section/div/section/div[2]/div[2]/div/div[2]/div[1]/div/div[2]/div/div/a/span[1]")));

    xxx.SelectByIndex(1);
}

HTML:

<span class="select2-hidden-accessible" role="status" aria-live="polite"></span> <span class="select2-hidden-accessible" role="status" aria-live="polite"></span> <span class="select2-hidden-accessible" role="status" aria-live="polite"></span> 
<div id="select2-drop-mask" class="select2-drop-mask" style="display: block;"></div>
<div id="select2-drop" class="select2-drop select2-display-none select2-drop-auto-width select2-drop-active select2-drop-above" style="left: 361.583px; top: 472.1px; bottom: auto; display: block; width: 262px;"></div>
</body>

首先, SelectElement只能與帶有Select標簽的元素一起使用。 這是一個div並且SelectElement類不適用於此處。

嘗試查找元素,然后按如下所示單擊:

IWebElement element = driver.FindElement(By.Id("select2-drop"));

IJavaScriptExecutor js = (IJavaScriptExecutor)driver;
js.ExecuteScript("arguments[0].click();", element);

問題是下拉列表實際上不是下拉列表。 選擇元素只能與html一起使用,如下所示。

解決方法是創建一個適合您現在使用的html結構的自定義方法。

var spans = driver.FindElements({selector});

foreach(var span in spans)
{
   if(span.Text == "some")
     span.Click();
}

如果您知道DropDown的文本,則可以使用IWebElement的SendKeys(string text)方法

internal static void SelectDD()
{
     IWebElement xxx= driver.FindElement("");
     xxx.SendKeys("Text Of The Dropdown");
}

暫無
暫無

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

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