当元素不是选择类型输入时,如何使用Selenium WebDriver java从下拉列表中获取所有选项值?



在销售队伍应用程序中。所有元素都没有正确的静态 id 或名称或其他属性。

我的要求是从salesforce Web应用程序的下拉列表中获取所有值。

在Chrome浏览器上的检查下拉列表中显示CSS:

<div data-aura-rendered-by="9529:0"><a aria-required="false" class="select" aria-disabled="false" aria-describedby="9520:0-label" aria-haspopup="true" tabindex="0" role="button" title="" data-aura-rendered-by="9530:0" href="javascript:void(0);" data-interactive-lib-uid="10">--None--</a></div>'

它只显示已经选择的值,即在我的应用程序中默认为无。

我无法在此div 中看到其他选项。这无助于我获取值。 在检查下拉列表中的值时,它在其他位置显示html

<div class="select-options" role="menu" data-aura-rendered-by="9542:0"><!--render facet: 9543:0--><ul class="scrollable" role="presentation" data-aura-rendered-by="9544:0"><!--render facet: 10751:0--><li role="presentation" data-aura-rendered-by="10755:0" class="uiMenuItem uiRadioMenuItem" data-aura-class="uiMenuItem uiRadioMenuItem"><a data-aura-rendered-by="10756:0" href="javascript:void(0);" role="menuitemradio" aria-disabled="false" tabindex="0" title="--None--" aria-checked="false"><b></b>--None--</a></li><li role="presentation" data-aura-rendered-by="10761:0" class="uiMenuItem uiRadioMenuItem" data-aura-class="uiMenuItem uiRadioMenuItem"><a data-aura-rendered-by="10762:0" href="javascript:void(0);" role="menuitemradio" aria-disabled="false" tabindex="0" title="Provider Concern / Question" aria-checked="false"><b></b>Provider Concern / Question</a></li><li role="presentation" data-aura-rendered-by="10767:0" class="uiMenuItem uiRadioMenuItem" data-aura-class="uiMenuItem uiRadioMenuItem"><a data-aura-rendered-by="10768:0" href="javascript:void(0);" role="menuitemradio" aria-disabled="false" tabindex="0" title="Provider No Show" aria-checked="false"><b></b>Provider No Show</a></li></ul></div>

我尝试使用以下代码来检索值。 但只得到空值:

List<WebElement> subStatuses = driver.findElements(By.xpath("(.//div[@class='select-options popupTargetContainer uiPopupTarget uiMenuList uiMenuList--default uiMenuList--left uiMenuList--short'])[3]//li"));      
System.out.println("size of the data list :: "+subStatuses.size()+"values:: "+subStatuses.toString());              
for(WebElement e:subStatuses)
{
System.out.println("Values from Fsl dropdownlist"+e.getText().toString());
}

有关如何从此下拉列表中检索值的任何帮助,非常感谢..!

你的 xpath 似乎是错误的: 尝试这样的事情:

List<WebElement> subStatuses = driver.findElements(By.xpath("//div[@class='select-options']/ul/li[contains(@class, 'uiMenuItem')]/a"));

如果它是您页面上唯一的"选择",这应该有效。如果有多个,您可能需要指定所需的 dom 中的选择选项div,例如选择第一个匹配项://div[@class='select-options'][1]/ul/li[contains(@class, 'uiMenuItem')]/a 而不是 getText((;您可能必须使用 element.getAttribute('textContent'(;

相关内容

最新更新