Selenium:org.openqa.selenium.ElementNotInteractableException:

时间:2017-07-25 06:33:54

标签: java selenium selenium-webdriver geckodriver

这就是HTML的样子。

<select name="ctl00$bodyContent$ddl_Territory" onchange="javascript:setTimeout(&#39;__doPostBack(\&#39;ctl00$bodyContent$ddl_Territory\&#39;,\&#39;\&#39;)&#39;, 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 ..

1 个答案:

答案 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"));