0

PythonでJavaスクリプトコンボボックスをクリックしようとしていますが、通常どおりに実行すると、コンボボックスが非表示になっているというエラーが表示され、プログラムでコンボボックスが表示されるのを待ちますが、表示されません。コンボボックスのこのオプションはサブメニューですが、実際のメニューからオプションだけを選択すると機能しますが、サブメニューオプションでは機能しません。これはウェブサイトです、https: //mbsdisclosure.fanniemae.com/PoolTalk2/index.html、>高度な検索>#次にコンボボックス私は予備メガのサブメニューオプションを探しています>予備メガ:ファニーメイ/ジニーメイ裏付けの変動金利。ありがとう!

4

1 に答える 1

0

Selenium won't be able to click as element you want to select is considered to be invisible(inactive). So the only way(imho) to use js to resolve this issue. That worked for me in java:

 @Test
    public void neeededDropdownSelect() throws InterruptedException {
        driver.get("https://mbsdisclosure.fanniemae.com/PoolTalk2/index.html");
          jsClickOnElement("li#tab_1>a>span");
        WebElement dropdownMenu = fluentWait(By.cssSelector("span#asSelectedSecType"));
        dropdownMenu.click();


        jsClickOnElement("div[class=\"fg-menu-container ui-widget ui-widget-content ui-corner-all fg-menu-flyout\"] ul[class=\"fg-menu ui-corner-all\"]>li>a[id=\"MEGA_INTERIM\"]");
        jsClickOnElement("div[class=\"fg-menu-container ui-widget ui-widget-content ui-corner-all fg-menu-flyout\"] ul[class=\"fg-menu ui-corner-all\"]>li>ul.ui-corner-all a[id=\"MEGA_INTERIM_ARM\"]");

    }

  public WebElement fluentWait(final By locator){
        Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)
                .withTimeout(30, TimeUnit.SECONDS)
                .pollingEvery(5, TimeUnit.SECONDS)
                .ignoring(NoSuchElementException.class);

        WebElement foo = wait.until(
                new Function<WebDriver, WebElement>() {
                    public WebElement apply(WebDriver driver) {
                        return driver.findElement(locator);
                    }
                }
        );
        return  foo;              }     ;

    public void jsClickOnElement(String cssSel){
        JavascriptExecutor js = (JavascriptExecutor) driver;
        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append("var x = $(\'"+cssSel+"\');");
        stringBuilder.append("x.click();");
        js.executeScript(stringBuilder.toString());

    }

Hope this helps you)

于 2012-09-12T00:19:30.970 に答える