Selenium:尝试在下拉列表中选择选项时元素不可见?

Selenium:尝试在下拉列表中选择选项时元素不可见?,selenium,selenium-webdriver,Selenium,Selenium Webdriver,如何在下面的下拉列表中选择项目选项3 选择1 选择2 选择3 选择4 备选案文5 备选案文6 用这个替换你的代码,我希望它对你有用。 更新:请等待元素可见性,如果任何单击或事件使其可见,或通过以下代码使其可见 //Use JavascriptExecutor to make the element visible ((JavascriptExecutor)wd).executeScript("jQuery('#assignee').css('display','block')");

如何在下面的下拉列表中选择项目
选项3


选择1
选择2
选择3
选择4
备选案文5
备选案文6

用这个替换你的代码,我希望它对你有用。 更新:请等待元素可见性,如果任何单击或事件使其可见,或通过以下代码使其可见

 //Use JavascriptExecutor to make the element visible  
((JavascriptExecutor)wd).executeScript("jQuery('#assignee').css('display','block')");
     Select select = new Select(wd.findElement(By.xpath(".//select[@id='assignee']")));
     select.selectByVisibleText("Option 3");
试着这样做:

  WebElement element = driver.findElement(By.xpath("//span[@class='kdropdown-wrap k-state-default']/select"));
  Select select = new Select(element);
  select.selectByVisibleText("Option 3");

你已经做得很好了

但是


问题在于样式显示属性设置为“无”

无显示意味着Selenium没有“可见”的内容,因此您会得到ElementNotVisibleException

你能试试什么 1) 从span元素的类(k-dropdown、k-dropdown-wrap等)可以看出,下拉列表可能由其他元素“操作”。如果您发现一个div或list元素也包含关于您的选项的信息,您可以检查您的站点。 比如:

<ul class="someClass" someOtherAttributes>
    <li>
        <a href="someHypertextRef">Option 1</a>
    </li>
    <li>
        <a href="someHypertextRef">Option 2</a>
    </li>
    <li>
        <a href="someHypertextRef">Option 3</a>
    </li>
</ul>
然后您需要使用这些其他元素。我看到了这种select元素,它们的显示属性从未多次更改

2) 下拉菜单附近有“按钮”吗?或者您可以单击下拉列表本身吗?如果是,则执行此操作,并检查显示属性是否更改。
如果它确实变为“block”或类似内容,您只需单击下拉元素,然后再尝试查找该选项。

SelectElement select1=new SelectElement(driver.findelelement(By.TagName(“select”); 选择1.选择文本(“28940”)


尝试此操作

对不起,即使我使用您的方式,驱动程序也可以检测选择,但无法通过可见文本进行选择。您可以通过传递指定的索引来使用Select.selectByIndex(索引)。或者使用select.selectByValue(“28941”);你的代码和我的有什么不同?我尝试了,但仍然无法选择VisibleText。哦,对不起,我没有注意到css,您正在应用样式显示。没有,这就是问题所在。不,他没有“应用”显示样式。但事实上,这就是问题所在(见我的答案)。他必须进一步调查该网站,以找到一种方法,使当前选项元素可见,或找到用户使用下拉列表时将使用的其他元素。@JuhiSaxena注入所需的状态/行为,正如您所建议的,绝对是一种方法。虽然就我个人而言,我总是尽量接近用户手动使用浏览器,但这是因为我主要是为e2e测试自动化purposes@drkthng我完全同意你的看法,但有时我们做一些事情只是为了我们的目的,因此,如果是这样,他可以使用我的方法,但如果不是这样,他应该从最终用户流中自动执行。问题在于将“样式显示”属性设置为“无”,您需要进一步研究如何“显示”选项->查看我的答案是的,谢谢您的解释。单击“自行下拉”后,我可以正确使用下拉列表。如果您愿意,可以将其标记为正确答案;-)
<ul class="someClass" someOtherAttributes>
    <li>
        <a href="someHypertextRef">Option 1</a>
    </li>
    <li>
        <a href="someHypertextRef">Option 2</a>
    </li>
    <li>
        <a href="someHypertextRef">Option 3</a>
    </li>
</ul>