2016-11-26 130 views
0

我需要选择自动完成降下来的地址中硒的webdriver。自动完成下拉框中硒的webdriver

我已经加入了下拉框中的检查元素源如下,

<div id="wrapper"> 
<ul id="ui-id-1" class="ui-autocomplete ui-front ui-menu ui-widget ui-widget-content ui-corner-all" tabindex="0" style="display: none;"/> 
<div class="k-widget k-window" style="padding-top: 33px; min-width: 90px; min-height: 50px; width: 200px; display: none; top: 600px; left: 5px;" data-role="draggable"> 
<div class="k-widget k-window" style="padding-top: 33px; min-width: 90px; min-height: 50px; width: 200px; display: none; top: 600px; left: 5px;" data-role="draggable"> 
<div class="k-widget k-window" style="padding-top: 33px; min-width: 90px; min-height: 50px; width: 200px; display: none; top: 600px; left: 5px;" data-role="draggable"> 
<div class="datepicker datepicker-dropdown dropdown-menu" style="display: none;"> 
<div class="datepicker datepicker-dropdown dropdown-menu" style="display: none;"> 
<div class="datepicker datepicker-dropdown dropdown-menu" style="display: none;"> 
<div class="datepicker datepicker-dropdown dropdown-menu" style="display: none;"> 
<div class="datepicker datepicker-dropdown dropdown-menu" style="display: none;"> 
<div class="datepicker datepicker-dropdown dropdown-menu" style="display: none;"> 
<ul id="ui-id-2" class="ui-autocomplete ui-front ui-menu ui-widget ui-widget-content ui-corner-all" tabindex="0" style="display: none;"/> 
<ul id="ui-id-3" class="ui-autocomplete ui-front ui-menu ui-widget ui-widget-content ui-corner-all" tabindex="0" style="display: none; width: 540px; top: 694.783px; left: 510px;"> 
<li class="ui-menu-item" role="presentation"> 
<a id="ui-id-704" class="ui-corner-all" tabindex="-1">SYDNEY, New South Wales, Australia, 1001</a> 
</li> 
<li class="ui-menu-item" role="presentation"> 
<a id="ui-id-705" class="ui-corner-all" tabindex="-1">SYDNEY, New South Wales, Australia, 1002</a> 
</li> 
<li class="ui-menu-item" role="presentation"> 
<a id="ui-id-706" class="ui-corner-all" tabindex="-1">SYDNEY, New South Wales, Australia, 1003</a> 
</li> 
<li class="ui-menu-item" role="presentation"> 
<a id="ui-id-707" class="ui-corner-all" tabindex="-1">SYDNEY, New South Wales, Australia, 1005</a> 
</li> 
<li class="ui-menu-item" role="presentation"> 
<li class="ui-menu-item" role="presentation"> 

我需要选择“悉尼,新南威尔士,澳大利亚,1001”从自动完成框中的下拉值。请给我一些想法。我已经使用下面的代码,但它不工作,

driver.findElement(By.id("HomeAddress_AddressLine1")).sendKeys("Walker Street"); 
     driver.findElement(By.id("HomeAddress_City")).click(); 
     driver.findElement(By.id("HomeAddress_City")).sendKeys("sydney"); 
     Thread.sleep(3000); 
     WebElement select = driver.findElement(By.id("ui-id-3")); 

     java.util.List<WebElement> options = select.findElements(By.tagName("li")); 

     for (WebElement option1 : options) { 

     if("SYDNEY, New South Wales, Australia, 1001".equals(option1.getText().trim())) 

     option1.click(); 
     }  
     Thread.sleep(2000); 

请建议我如何获得该值。这里的问题是id值ui-id-3每次页面重新加载时都会改变,例如(像ui-id-12,ui-id-18)。我附上了页面的屏幕截图。

谢谢。 enter image description here

+0

选择类,因为没有出现在DOM没有选择类将不会在这里工作。您必须使用xpath或CSS来使其工作 – thebadguy

回答

0

您需要点击“下拉菜单”,打开它,并显示了城市的选项,然后单击所需的城市。每个城市名称都在A标签中,因此您可以使用By.linkText()来查找它们。我将它包装在一个函数中以使其可重用。

public static void setCity(String cityName) 
{ 
    driver.findElement(By.id("ui-id-3")).click(); // click the "dropdown" to display the list of options 
    driver.findElement(By.linkText(cityName)).click(); 
} 

...你这样称呼它

setCity("SYDNEY, New South Wales, Australia, 1001");