无法从下拉列表中选择元素

时间:2015-10-20 00:29:53

标签: c# selenium selenium-webdriver

我很难用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>

2 个答案:

答案 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");