【问题标题】:Selecting a javascript drop down via selenium?通过 selenium 选择 javascript 下拉菜单?
【发布时间】:2015-05-15 13:17:25
【问题描述】:

下面是我想通过 selenium webdriver 选择“所有恢复”选项的 javascript 下拉列表:

<div id="resume_freshness_container">
<div class="dropdown_small_wrapper">
<div class="left">Last 6 Months</div>
                                <div class="right"><img class="clip_image" src="http://media.monsterindia.com/v2/recruiter/2.1/new_search/newlook_combined.png"></div>
                                <div class="clear_both"></div>
                                </div></div>
<script language="javascript">  
                jQuery(document).ready(function(){  createSingleSelectCombo({id:'selDay',valueVariableName:'day',tabindex:'62',label:"",preSelected:"180",replaceWithId:'resume_freshness_container',width:'216',heightOptions:'height:240px;overflow-y:auto',animateScroll:true,
                options:[{id:'1',values:"in last 1 day"},
                {id:'3',values:"in last 3 days"},               
                {id:'7',values:"in last 7 days"},               
                {id:'15',values:"in last 15 days"},             
                {id:'30',values:"in last 1 month"},             
                {id:'90',values:"in last 3 months"},                
                {id:'180',values:"in last 6 months"},               
                {id:'360',values:"in last 12 months"},              
                {id:'540',values:"in last 18 months"},
                {id:'9999',values:"All Resumes"},
                {id:'4-7',values:"4-7 days"},
                {id:'8-15',values:"8-15 days"},
                {id:'16-30',values:"16-30 days"},
                {id:'31-90',values:"1-3 months"},
                {id:'91-180',values:"3-6 months"},
                {id:'181-360',values:"6-12 months"},
                {id:'361-540',values:"12-18 months"},
                {id:'541-9999',values:"Only older than 18 months"}

                ]});


                borderTopSingleSelect({container:'resume_freshness_container',afterId:'10'});

            });


</script>   

我已使用以下代码选择下拉菜单,然后选择所需的选项:

Select select = new Select(driver.findElement(By.id("resume_freshness_container")));
select.deselectAll();
select.selectByVisibleText("All Resumes");

我也尝试使用 id "selDay" 选择它,但两次都给了我下面列出的相同异常

Exception in thread "main" org.openqa.selenium.support.ui.UnexpectedTagNameException: Element should have been "select" but was "div"

*我是 selenium 的新手,所以请帮助我知道我哪里出错了*

【问题讨论】:

    标签: java javascript selenium selenium-webdriver


    【解决方案1】:

    是的,您不能使用 Select 类来处理它 - 它专门用于 select-&gt;option HTML 结构。

    您需要先找到带有id="selDay"的元素,点击它,找到带有“所有简历”文本的元素并点击它:

    WebElement selDay = driver.findElement(By.id("selDay"));
    selDay.click();
    
    WebElement allResumes = selDay.findElement(By.xpath("//*[.=\"All Resumes\"]"));
    allResumes.click();
    

    【讨论】:

    • 非常感谢您的帮助,并按照您所说的方式进行操作,但即使在调用“allResumes.click();”之后也是如此未选择该值。它被突出显示,但在提交表单时,“过去 6 个月”的默认值被传递,而我希望“所有简历”被传递
    • 我还检查了返回“false”的“allResumes.isSelected()”
    • @YatinGrover 只是在黑暗中拍摄,你能重复点击两次吗?
    • 是的,我之前尝试过同样的事情。但它没有用,所以改变了我的方法。现在我正在发送“tab”键以到达所需的元素。
    猜你喜欢
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 2022-11-11
    • 1970-01-01
    • 2018-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多