我很难用C#在selenium web驱动程序中选择元素下拉列表。我试了很多google。什么都没有成功。有人可以帮忙吗?
我的代码是
IWebElement element = driver.FindElement(By.Id("header_Menu1Container"));
SelectElement se = new SelectElement(element);
se.SelectByValue("Add New Action`enter code here`");
我也尝试使用selectByText。
HTML code:
<div id="header_Menu1Container" class="MenuStyle" style="width: 100%">
<ul class="adxm menu_htb level1">
<li>
<a class="submenu" href="/ad07.asp">
<ul class="level2">
</li>
<li>
<a class="submenu" href="/ca10.asp">
<span class="text">Actions</span>
<span class="right2"></span>
</a>
<ul class="level2">
<li>
<a class="submenu" title="Add New Action" href="/ca11c.asp">
</li>
<li>
<a class="submenu" title="All Actions" href="/ca10.asp">
<span class="text">All Actions</span>
</a>
答案 0 :(得分:0)
您提供的HTML中没有SELECT
标记,它看起来像是模拟SELECT
之一...基本上其他标记格式化为{{1 }}。无论如何,您必须一次单击其他元素...首先单击SELECT
- 查找标记,然后在下拉列表中单击所需选项。从您提供的代码段,您似乎想要&#34;添加新操作&#34;选项。
我们可能不得不做一些试验和错误,因为我无法看到该页面,但是这样的事情会让你朝着正确的方向前进。
SELECT
最初点击下拉列表后,您可能需要稍微停顿一下。如果是这样,您可以使用下面的driver.FindElement(By.Id("header_Menu1Container")).Click();
driver.FindElement(By.CssSelector("a[title='Add New Action']")).Click();
代码。
WebDriverWait
修改
抱歉,我没有看到语言标签,我只是编写了Java。我刚刚意识到你想要C#所以我编辑了答案。
如果没有更多的周边HTML或链接到页面,这是我能得到的最好的。基本前提是这不是driver.FindElement(By.Id("header_Menu1Container")).Click();
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
wait.Until(ExpectedConditions.ElementToBeClickable(By.CssSelector("a[title='Add New Action']"))).Click();
。为了使其工作,您必须单击外部元素以打开下拉列表,然后单击下拉列表中的一个元素...使用SELECT
。
编辑2
更多新信息...您需要的是将鼠标悬停在“操作”菜单上以显示子菜单,然后点击“添加新操作”链接。
.click()
答案 1 :(得分:0)
直接找到要从下拉列表中选择的元素的xpath。 - - - - - - - - - - 要么 - - - - - - - - - - - - - - - ---
WebElement select = driver.findElement(By.id("----------"));
List<WebElement> options = select.findElements(By.tagName("-----------"));
for (WebElement option : options) {
if("Germany".equals(option.getText()))
option.click();
} - - - - - - - - - 要么 - - - - - - - - - - - - - - - - --------
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
Select country1 = new Select(country);
country1.selectByVisibleText("Canada");