python - 选择第一个下拉列表后,第二个下拉列表发生变化

标签 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')

它有效。

看起来 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/

相关文章:

jquery - 选择带有 'Other' 选项的框以显示输入文本字段。如何使用 jquery 获取表单提交的值?

python - Holoviews 按分类数据散点图颜色

python - 比较两个数据帧并在匹配时通过填充二进制将每个值转置为列?

java - 如何在 selenium webdriver 中处理 Javascript 警报/弹出窗口

python - Selenium/Chromedriver/Chromium(86) 问题 AWS Lambda

python - 使用代理与 phantomjs (selenium webdriver)

html - Blogger 下拉菜单尝试 2

html - Bootstrap 嵌套下拉列表

python - Pandas:将 DataFrame 转换为每个单元格的均值和标准差

python - 用python将西里尔字母写入mysql