选择第一个下拉列表后第二个下拉列表更改

时间:2015-09-22 20:58:50

标签: python selenium drop-down-menu

我在单页上有两个下拉列表。 我可以通过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或名称......没有任何变化......但仍无法在第二个下拉列表中选择该值。

1 个答案:

答案 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");