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

为什么我的代码没有可靠的点击下拉框项?

梁丘威
2023-03-14

为什么我的代码不能可靠地点击下拉菜单项?

> < li >我的代码不能可靠地单击预期的下拉菜单项。 < li >例如,如果我执行相同的测试100次,其中12次会失败,因为该方法不会选择预期的菜单项,比如说(Mr),即使使用发送键也会出现相同的问题。 < li >我设置了x30秒的等待时间,等待元素可见,即使等待元素可点击,也会出现同样的问题。 < li>

例如,请参见下面的下拉项目:

<select id="titlefield" class="form-control ng-pristine ng-untouched ng-invalid ng-invalid-required" name="Salutation" ng-model="PersonalDetails.Salutation" ng-options="salut.id as salut.id for salut in Salutations" ng-required="FlowData.IsGuest" required="required">
<option class="ng-binding" value="">Please select</option>
<option value="0" label="Mr.">Mr.</option>
<option value="1" label="Miss">Miss</option>
<option value="2" label="Mrs.">Mrs.</option>
<option value="3" label="Ms.">Ms.</option>
<option value="4" label="Dr.">Dr.</option>

我的代码由以下部分构成:

public void selectTitleFromDropdownMenu(WebElement dropdown, String textToSearchFor) {
Wait<WebDriver> tempWait = new WebDriverWait(this.driver, 30);
try {
    tempWait.until(ExpectedConditions.visibilityOf(dropdown));
    List<WebElement> options = dropdown.findElements(By.tagName("option"));
    Select selectDropdown = new Select(dropdown);
    for (int i = 0; i < options.size(); i++) {
        if (options.get(i).getText().equals(textToSearchFor)) {
            selectDropdown.selectByVisibleText(textToSearchFor);
            System.out.println("Successfully selected the following text: " + textToSearchFor + ", using the following webelement: " + "<" + dropdown.toString() + ">");
        }
    }

}catch(Exception e) {
    System.out.println("Unable to select the following text: " + textToSearchFor + ", using the following WebElement: " + "<" + dropdown.toString() + ">");
    Assert.assertFalse(true, "Unable to select the required text from the dropdown menu, Exception: " + e.getMessage());
} 

}

共有2个答案

郭星文
2023-03-14

您也可以尝试以下操作:<br><code>Select selectDropdown=new Select(driver.findElement(By.id(“titlefield”));选择下拉菜单。选择按可视文本(文本到搜索对象)

戚俊美
2023-03-14

您需要在下拉菜单上而不是在选项上创建选择对象。同样,你不需要任何for循环。

List<WebElement> options = dropdown.findElements(By.Id("titlefield"));
Select selectDropdown = new Select(dropdown);
selectDropdown.selectByVisibleText(textToSearchFor);
 类似资料:
  • 今天我在家里的电脑上安装了netbean,以便在家做一些工作。我安装了java 8 JDK(151),并安装了包含所有内容的netbean(没有进行自定义安装)。然后我把我的项目从github上撤下来。 我的安装文件夹是在E:\netbean我的项目文件夹是默认的c: 我加载了项目,打开XAMPP并运行它。太好了,很管用。 然后我对HTML进行了更改(修复了我犯的一个拼写错误)。再次运行。找不到零

  • 本文向大家介绍jQuery中ztree 点击文本框弹出下拉框的实例代码,包括了jQuery中ztree 点击文本框弹出下拉框的实例代码的使用技巧和注意事项,需要的朋友参考一下 废话不多说了,具体代码如下所示: 以上所述是小编给大家介绍的jQuery中ztree 点击文本框弹出下拉框的实例代码,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

  • 您将自动执行著名的歌曲“墙上的99瓶XXX”。你将打印这首歌所有99个诗句的歌词。用循环!如果你不知道歌词,用谷歌查一下。 该方案应: a.如果他们不到21岁,或者他们喜欢苏打水,那么歌词是“墙上有99瓶苏打水” B.如果他们超过21岁,那么是“99瓶啤酒” 您必须使用WHILE循环,并且counter变量必须是print语句的一部分! 所以第一节是: 99瓶苏打水挂在墙上 墙上有98瓶苏打水 最

  • 请检查这段代码,看看@Arun R在如何计算覆盖另一个矩形的矩形面积中所说的算法有什么问题 为什么它没有删除其他内部的矩形

  • 在Java8中,我们有类stream ,奇怪的是,它有一个方法 所以您希望它实现interface Iterable ,这恰恰需要这个方法,但事实并非如此。 当我想使用foreach循环对流进行迭代时,我必须执行如下操作 我是不是漏了什么?

  • 下面是我遇到错误的程序: //导入扫描程序类导入java。util。扫描仪; 这些是我得到的错误: