当前位置: 首页 > 知识库问答 >
问题:

Selenium:下拉菜单被按钮遮挡,无法单击

祝锐
2023-03-14

我有在下拉列表中选择每个选项的测试用例,但无论我目前做什么,我都会遇到这个错误。

结果消息:系统。InvalidOperationException:元素在点(1170.0333251953125405.4250030517578)处不可单击,因为另一个元素遮挡了它

<div class="btn-group bootstrap-select">
    <button type="button" class="btn dropdown-toggle btn-default" data-toggle="dropdown" role="button" data-id="year" title="2018" aria-expanded="false">
        <span class="filter-option pull-left">2018</span>&nbsp;
        <span class="bs-caret">
            <span class="caret" />
        </span>
    </button>
    <div class="dropdown-menu open" role="combobox" style="max-height: 272px; overflow: hidden; min-height: 0px;">
        <ul class="dropdown-menu inner" role="listbox" aria-expanded="false" style="max-height: 260px; overflow-y: auto; min-height: 0px;">
            <li data-original-index="0" class="selected">
                <a tabindex="0" class="" data-tokens="null" role="option" aria-disabled="false" aria-selected="true">
                    <span class="text">2018</span><span class="glyphicon glyphicon-ok check-mark" />
                </a>
            </li>
            <li data-original-index="1">
                <a tabindex="0" class="" data-tokens="null" role="option" aria-disabled="false" aria-selected="false">
                    <span class="text">2017</span><span class="glyphicon glyphicon-ok check-mark" />
                </a>
            </li>
        </ul>
    </div>
    <select aria-label="view all previous payments" class="selectpicker" data-val="true" data-val-number="The field Year must be a number." data-val-required="The Year field is required."  id="year" name="Year" tabindex="-98">
        <option selected="selected" value="2018">2018</option>
        <option value="2017">2017</option>
    </select>
</div>

目前正试图用这个代码改变年份 -

 SelectElement DropDown = new SelectElement(ObjectIdentification);
 DropDown.SelectByValue(ValueToBeSelected);
 return true;

WebElement是这样定义的

 [FindsBy(How = How.XPath, Using = "//*[contains(@class, 'selectpicker')]")]
 private IWebElement DropDownYear { get; set; }

这是selenium尝试选择拾取时下拉列表的样子。我看不到任何东西遮住它。

共有3个答案

贡英华
2023-03-14

试试这个代码:

var down= driver.FindElement(By.id("year"));
var DropDown = new SelectElement(down);  

//select by value
DropDown .SelectByValue("2017"); 
 // select by text
 DropDown .SelectByText("2017");  

你可以有这样的Web元素:

 [FindsBy(How = How.id, Using = "year")]
 private IWebElement DropDownYear { get; set; }  

更新:

IList<IWebElement> options= webDriver.FindElements(By.CssSelector("select[id='year']>option"));  
foreach (IWebElement element in options){  
     if(element.GetText().Equals("2017")){  

        element.Click();
    }
    }
太叔繁
2023-03-14

XPath需要更改如下

//select[@id='year']

其他的

使用ID或名称定位器来选择元素

公西良骏
2023-03-14

好的,这里有几个选项

> < li>

检查您是否正在最大化窗口-

 driver.Manage().Window.Maximize();

使用操作类查找元素并对其执行操作

IWebElement element = driver.FindElement(By.Id("year"));
Actions action = new Actions(driver);
action.MoveToElement(element);
var DropDown = new SelectElement(element);
DropDown.SelectByText("2017");

使现代化

IJavscript执行器

IWebElement element = driver.FindElement(By.Id("year"));
((IJavaScriptExecutor)driver).ExecuteScript("var select = arguments[0]; for(var i = 0; i < select.options.length; i++){ if(select.options[i].text == arguments[1]){ select.options[i].selected = true; } }", element, "2017");
 类似资料:
  • 主要内容:实例,分割的按钮下拉菜单,实例,按钮下拉菜单的大小,实例,按钮上拉菜单,实例本章将讲解如何使用 Bootstrap class 向按钮添加下拉菜单。如需向按钮添加下拉菜单,只需要简单地在一个 .btn-group 容器中放置按钮和下拉菜单即可。您也可以使用 <span class="caret"></span> 来指示按钮作为下拉菜单。 下面的实例演示了一个基本的简单的按钮下拉菜单: 实例 <div class="btn-group"> <button type="but

  • 嗨,我正在尝试自动启动下拉菜单。默认情况下,它的可见性是隐藏的。将鼠标悬停在它上面时,它的可见性属性显示为可见。我可以单击下拉菜单,但是在单击下拉菜单后,我的selenium脚本不能从下拉菜单中选择值。 错误:线程"main"org.openqa.selenium.ElementNotVisibleException异常:无法单击元素 HTML代码段

  • 我试图用硒点击“下一页”按钮,但没有成功。我使用了正确的CSS选择器还是应该把它换成别的东西?

  • 我试图创建一个自动的网络会话,我登录到一个网站,并从下拉框中选择一个选项。我能够使用硒进入页面,但我无法点击打开下拉菜单的栏,然后选择我想要的选项。这是页面的截图,它的超文本标记语言代码:[![在此输入图像描述][1]][1][![在此输入图像描述][2]][2] 我想单击下拉列表中的“降级性能”选项。我有点被困在这里,因为下拉列表的HTML与[this one][3]根本不相似(无法“选择”)。

  • 你好,我正在使用selenium,并且已经成功地设置了id历史的文本字段,但是无法从

  • 问题内容: 如何设置HTML复选框,单选按钮和下拉菜单的样式?可以吗 我想为复选框或单选按钮使用图像,对列表使用相同的图像-下拉箭头在大多数情况下看起来不太好。 问题答案: 请参阅jQuery插件的2个链接(用于样式化复选框和单选按钮): http://line25.com/articles/jquery-plugins-for-styling-checkbox-radio- buttons ht