繁体   English   中英

无法使用Selenium WebDriver(Firefox)与输入(role = combobox)进行交互

[英]Cannot interact with input (role=combobox) using Selenium WebDriver (Firefox)

我正在研究Selenium WebDriver,并在公共站点上测试我的技能。 问题是我无法使用Selenium WebDriver + Java与role ='combobox'的输入元素进行交互。 我需要为计算器的第一个元素(“Калькулятор”-“Типрасчета”-此文本附近的组合框)进行交互(选择2d选项)。 Firefox显示其代码:

<div class="select2-search">

<label class="select2-offscreen" for="s2id_autogen2_search"></label>
<input id="s2id_autogen2_search" class="select2-input" type="text" aria-autocomplete="list" aria-expanded="true" role="combobox" spellcheck="false" autocapitalize="off" autocorrect="off" autocomplete="off" aria-owns="select2-results-2" placeholder="" aria-activedescendant="select2-result-label-17"></input>

当我尝试为其单击或发送键时,它会写出该元素(selects和selects2)均不可见,尽管该元素可见且可以手动交互。 CSS不会转换。 我发现JS可以更改属性以使元素可见,但是我尝试了-并没有进行任何更改,isDisplayed()显示为false,并且我无法选择组合框的2d项。

这是代码(我只剩下主要部分):

        WebDriver driver = new FirefoxDriver();
        driver.get("http://sberbank.ru/ru/person/credits/money/consumer_unsecured");

        try{
            Thread.sleep(1500);
            }catch(Exception e)
        {System.out.println("Error in Sleep.");}
        List<WebElement> selects = driver.findElements(By.cssSelector(".select2-search"));//(".select2-results"));
        List<WebElement> selects2 = driver.findElements(By.xpath("//input[@class='select2-input']"));
        System.out.println("xpath: "+selects2.size());
JavascriptExecutor js = (JavascriptExecutor)driver;
        js.executeScript("window.scrollTo(0,1000);");
        System.out.println("value:"+selects2.get(0).getAttribute("value"));
        ((JavascriptExecutor) driver).executeScript("arguments[0].style.display='inline';arguments[0].style.visibility='visible';arguments[0].style.height = '20px';arguments[0].style.width = '80px';",selects2.get(0));
        System.out.println("visible: "+selects2.get(0).isDisplayed());
        System.out.println("enabled: "+selects2.get(0).isEnabled());
        System.out.println("height: "+selects2.get(0).getAttribute("height")+",width: "+selects2.get(0).getAttribute("width"));
        selects2.get(0).click();
        selects2.get(0).sendKeys("По среднемесячному доходу");

它写道:xpath:7值:visible:启用错误:true高度:0,宽度:0线程“ main”中的异常org.openqa.selenium.ElementNotVisibleException:元素当前不可见,因此可能无法与之交互

我也尝试使用JQuery触发keyevent,但没有帮助:

((JavascriptExecutor) driver)
        .executeScript("var s=window.document.createElement('script');" +
        "s.src='D:\\Data\\Selenium\\jquery-1.11.3.min.js';" +
        "window.document.head.appendChild(s);");
        ((JavascriptExecutor)driver).executeScript("arguments[0].focus();var e = jQuery.event.trigger({ type : 'keypress', which : 65 });arguments[0].trigger(e);", selects2.get(0));

它写到“线程“主”中的异常org.openqa.selenium.WebDriverException:arguments [0] .trigger不是函数”

请帮助我修复代码,以便设置此组合框的2d项。

终于成功了-

driver.get('http://sberbank.ru/ru/person/credits/money/consumer_unsecured')
driver.find_element_by_xpath('//*[@id="s2id_autogen1"]/a').click()
driver.find_element_by_xpath('//ul[@class="select2-results ps-container"]/li[2]').click()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM