【发布时间】:2017-02-17 17:36:32
【问题描述】:
为什么我的代码不能可靠地点击下拉菜单项?
- 我的代码不能可靠地单击预期的下拉菜单项。
- 例如,如果我执行相同的测试 100 次,则有 12 个测试将失败,因为该方法不会选择预期的菜单项,比如说(先生),即使使用发送键也会出现同样的问题。
- 我设置了 x30 秒等待元素可见的等待时间,即使等待元素可点击也会出现同样的问题。
-
例如请看下面的下拉项:
<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()); }}
【问题讨论】:
-
请参阅此处提供的解决方案。它会帮助你。 stackoverflow.com/questions/30184055/…
标签: java selenium selenium-webdriver webdriver