这就是HTML的样子。
<select name="ctl00$bodyContent$ddl_Territory" onchange="javascript:setTimeout('__doPostBack(\'ctl00$bodyContent$ddl_Territory\',\'\')', 0)" id="ctl00_bodyContent_ddl_Territory" class="select2-container" style="margin-left: 3%;">
<option selected="selected" value=""></option>
<option value="675">ALASKA AK (OCRGA061A) - HCP</option>
<option value="271">ALBANY GA (OCBDB041A) - HCP</option>
<option value="125">ALBANY NY (OCBAA031A) - HCP</option>
<option value="126">ALBANY NY (OCBAA032A) - HCP</option>
<option value="426">ALBANY NY (OCRAA031A) - HCP</option>
....
<option value="427">ALBANY NY (OCRAA031A) - HOSPITAL</option>
不断失败的自动化代码 -
Select territory = new Select(driver.findElement(By.name("ctl00$bodyContent$ddl_Territory")));
System.out.println("selected");
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
// Trying to figure if sleep is required or not..
e.printStackTrace();
}
List<WebElement> optionList = territory.getOptions();
for (WebElement webElement : optionList) {
System.out.println(webElement.getText()); //this print nothing..empty line..confused
}
territory.selectByIndex(1); //exception thrown here
当我致电selectByIndex
时,我得到org.openqa.selenium.ElementNotInteractableException:
。我已经尝试了selectByValue等..也没有帮助。 我确信territory
指向正确的元素,因为optionList计数与HTML 中的选项数相同。但是不确定为什么文本没有在Loop中打印以及为什么例外..
Driver - geckodriver-v0.18.0-win64
TIA!
更新1:webElement.isDisplayed()
打印false
以获取所有选项。 getLocation()
为X和Y坐标打印0,0
..
答案 0 :(得分:1)
获取所有选项的替代方法如下
$config['base_url'] = 'http://website.org/';
$config['index_page'] = '';
按可见文字选择的替代方式
List<WebElement> optins = driver.findElements(By.xpath("//select[@name='ctl00$bodyContent$ddl_Territory']/options"));