无法使用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 可以更改属性以使元素可见,但我尝试了 - 没有任何变化,isDisplay() 显示 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价值:可见: 假启用:真高度: 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));
它写"线程"main"org.openqa.selenium.WebDriverException中的异常:参数[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()
相关文章:
- 从dojo comboBox中删除选项
- sencha面板覆盖了我试图放置在它下面的内容.datePicker和comboBox
- 如何使用jquery combobox拥有不同的最小长度
- 如何从控制器更改extjs Combobox的“valueField”
- ComboBox typeAhead有效,但在某些行为条件下valueField为空
- 谷歌散点图-{role:'style'}{role:#39;工具提示'}不能以JSON形式工作
- 用java脚本填充combobox
- 如何通过JavaScript创建Telerik MVC Combobox
- Combobox with javascript on ruby on rails
- Ext JS搜索在MultiSelect ComboBox中的可能
- 如何使用 JQuery 和 Ajax 使用另一个 ComboBox 的内容更新 HTML 文件中 ComboBox 的内
- 将自定义类添加到 jQuery UI 的 ui-autocomplete Combobox Div
- KendoUI ComboBox 显示不正确的 REST JSON 解析
- Javascript combobox
- Telerik ComboBox FindControl 在项模板内
- 在jQuery Mobile上禁用data-role=“header”上的页面过渡
- 使用 Combobox 类别和 Textbox JavaScript 进行过滤
- jQueryUI Combobox,以避免外部.JS
- dependent combobox in datagrid easyui
- 无法使用Selenium WebDriver(Firefox)与输入(role=combobox)进行交互