Selenium Java:Chrome中等待元素可点击断言失败问题排查
Selenium处理Select下拉框等待问题:elementToBeClickable失效的解决办法
问题场景
编写Selenium测试时,针对亚马逊首页搜索栏旁的searchBoxDropdown下拉框,selectDropdownElement方法中用wdwait等待元素可点击的代码会报错,注释该等待逻辑后测试可正常通过。但同一测试里,数量下拉框用几乎相同的等待逻辑却能正常工作,两个下拉框均为Select类型。
相关代码
元素定位与初始方法实现
@FindBy(id="searchDropdownBox") WebElement searchBoxDropdown; public void selectDropdownElement(String elementx) { wdwait.until(ExpectedConditions.elementToBeClickable(searchBoxDropdown)); Select elementDropdown = new Select(searchBoxDropdown); elementDropdown.selectByVisibleText(elementx); }
测试用例
@Test public void amazonTest() { amazonAddToCart.selectDropdownElement("Books"); amazonAddToCart.inputSearchBox("Six of Crows Boxed Set"); amazonAddToCart.clickBookLink(); amazonAddToCart.selectHardcover(); amazonAddToCart.selectQuantity(20); amazonAddToCart.clickGiftCheckbox(); amazonAddToCart.clickAddToCart(); }
对应HTML元素
<select aria-describedby="searchDropdownDescription" class="nav-search-dropdown searchSelect nav-progressive-attrubute nav-progressive-search-dropdown" data-nav-digest="k+fyIAyB82R9jVEmroQ0OWwSW3A=" data-nav-selected="0" id="searchDropdownBox" name="url" style="display: block; top: 2.5px;" tabindex="0" title="Search in">
尝试过的无效方案
将elementToBeClickable替换为visibilityOfElements,报错情况依旧。
有效解决方法
改用textToBePresentInElement等待下拉框默认选项“All”加载完成,之后再执行选择操作:
public void selectDropdownElement(String elementx) { wdwait.until(ExpectedConditions.textToBePresentInElement(searchBoxDropdown, "All")); Select elementDropdown = new Select(searchBoxDropdown); elementDropdown.selectByVisibleText(elementx); }
内容的提问来源于stack exchange,提问作者nerull7
相关产品推荐
相关产品推荐

