Selenium Webdriver - 单击多个下拉菜单时出现陈旧元素异常,而 HTML DOM 没有改变
Selenium Webdriver - Stale element exception when clicking on multiple dropdowns while HTML DOM doesn't change
我尝试自动化一个场景,条件是我必须 select 从下拉菜单中选择一个选项,然后在它旁边有另一个下拉菜单,我必须从下一个下拉菜单中单击一个选项才能启用按钮。我尝试了代码,但它只点击了第一个选项,并且显示错误,因为陈旧的元素 reference:element 没有附加到页面文档。请帮忙。如果不是很清楚请告诉我。
当您 select Insurance Test Client
时,您只会获得选项 Product Insurance
,这实际上意味着 HTML DOM 被更改,这导致 StaleElementException
。为避免这种情况,一旦我们从第一个下拉列表 select 开始,我们需要为第二个下拉列表的元素引入一些 wait
以在 HTML DOM
中呈现。然后我们将使用Select
Class到select一个选项。尝试以下代码块:
//Select Channel
Select oSelectChannel = new Select(driver.findElement(By.id("client")));
oSelectChannel.selectByVisibleText("Insurance Test Client");
WebDriverWait wait5 = new WebDriverWait(driver, 10);
wait5.until(ExpectedConditions.elementToBeClickable(By.xpath("xpath_of_a_Category_item")));
//Select Category
Select oSelectCategory = new Select(driver.findElement(By.xpath("//*[@id='category']")));
oSelectCategory.selectByVisibleText("Product Insurance");
我尝试自动化一个场景,条件是我必须 select 从下拉菜单中选择一个选项,然后在它旁边有另一个下拉菜单,我必须从下一个下拉菜单中单击一个选项才能启用按钮。我尝试了代码,但它只点击了第一个选项,并且显示错误,因为陈旧的元素 reference:element 没有附加到页面文档。请帮忙。如果不是很清楚请告诉我。
当您 select Insurance Test Client
时,您只会获得选项 Product Insurance
,这实际上意味着 HTML DOM 被更改,这导致 StaleElementException
。为避免这种情况,一旦我们从第一个下拉列表 select 开始,我们需要为第二个下拉列表的元素引入一些 wait
以在 HTML DOM
中呈现。然后我们将使用Select
Class到select一个选项。尝试以下代码块:
//Select Channel
Select oSelectChannel = new Select(driver.findElement(By.id("client")));
oSelectChannel.selectByVisibleText("Insurance Test Client");
WebDriverWait wait5 = new WebDriverWait(driver, 10);
wait5.until(ExpectedConditions.elementToBeClickable(By.xpath("xpath_of_a_Category_item")));
//Select Category
Select oSelectCategory = new Select(driver.findElement(By.xpath("//*[@id='category']")));
oSelectCategory.selectByVisibleText("Product Insurance");