我在单页上有两个下拉列表。 我可以通过ID识别它们
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome()
driver.get("http://www.ncdex.com/MarketData/FuturePrices.aspx")
dd_Commodity = driver.find_element_by_id('ctl00_ContentPlaceHolder3_ddlCommodity')
dd_ExpiryDate = driver.find_element_by_id('ctl00$ContentPlaceHolder3$ddlExpiryDate')
我可以完美地选择FIRST下拉列表中的值...没有问题
dd_Commodity.send_keys('SOY')
dd_Commodity.send_keys(Keys.TAB)
但是当我尝试在第二个下拉列表中选择值时
dd_ExpiryDate.send_keys('Jun-2010')
我收到错误
selenium.common.exceptions.StaleElementReferenceException: Message:
stale element reference: element is not attached to the page document
有趣的是当我通过
单独选择第二个下拉列表时dd_ExpiryDate.send_keys('Oct-2010')
有效。
在FIRST下拉列表中选择值时,看起来更改了SECOND下拉列表值。
但是elementID或名称......没有任何变化......但仍无法在第二个下拉列表中选择该值。
答案 0 :(得分:-1)
在你的情况下,当你选择大豆豆#39;在第一次下拉中的值,第二次下拉中的值将发生变化。但它显示出不同的价值观。 您可以通过在logcat中显示第二个下拉列表的选项值来理解。
尝试从以下代码中了解。
driver.get("http://www.ncdex.com/MarketData/FuturePrices.aspx");
WebElement selectFirstDDEle = driver
.findElement(By
.xpath("//select[@id='ctl00_ContentPlaceHolder3_ddlCommodity']"));
Select selectFirstDD = new Select(selectFirstDDEle);
// selectFirstDD.selectByIndex(1);
// or
selectFirstDD.selectByVisibleText("Soy Bean ( SYBEANIDR )");
// To select second drop down
WebElement selectSecondDDEle = driver
.findElement(By
.xpath("//select[@id='ctl00_ContentPlaceHolder3_ddlExpiryDate']"));
Select selectSecondDD = new Select(selectSecondDDEle);
List<WebElement> options = selectSecondDD.getOptions();
for (int i = 0; i < options.size(); i++) {
System.out.println("***** position= " + i + " text= "+ options.get(i).getText());
}
//selectSecondDD.selectByIndex(5);
selectSecondDD.selectByVisibleText("Oct-2015");