我在单个页面上有两个下拉菜单。 我可以通过 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')
它有效。
看起来 SECOND 下拉值在选择 FIRST 下拉列表中的值时发生了变化。
但是 elementID 或名称...没有任何变化...但仍然无法在第二个下拉列表中选择值。
最佳答案
在您的情况下,当您在第一个下拉列表中选择“大 bean ”值时,第二个下拉列表中的值将会更改。但它显示出不同的值(value)观。 您可以通过在 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");
关于python - 选择第一个下拉列表后,第二个下拉列表发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32726809/