我想从下拉列表中选择一个包含搜索框的项目。我的硒代码是:
public Cursor getAllWord(String table)
{
Cursor mCursor = mDb.query(table, new String[] {"_id","word","definition","favourite"},
null, null, null,null, " word COLLATE NOCASE");
if (mCursor != null) {
mCursor.moveToFirst();
}
return mCursor;
}
public Cursor getWordByName(String table, String inputText) throws SQLException {
Cursor mCursor = null;
if (inputText == null || inputText.length () == 0) {
mCursor = mDb.query(table, new String[] {"_id","word","definition","favourite"},
null, null, null,null, " word COLLATE NOCASE");
}
else {
mCursor = mDb.query(true, table, new String[] {"_id","word","definition","favourite"},
"word" + " like '" + inputText + "%'", null,
null, null, " word COLLATE NOCASE",null);
}
if (mCursor != null) {
mCursor.moveToFirst();
}
return mCursor;
}
当我正在调试时,此代码正在运行,但是当我运行我的脚本时,它会抛出异常: org.openqa.selenium.ElementNotVisibleException:元素不可见 在线:
WebElement select = BrowserSetup.driver.findElement(By.xpath("//div[contains(@class,'chosen-container')]"));
select.click();
List<WebElement> dropDowns = BrowserSetup.driver.findElements(By.className("chosen-results"));
WebElement dropDownOne = dropDowns.get(0); // perform further action
dropDownOne.click();
Html代码是:
WebElement dropDownOne = dropDowns.get(0);
dropDownOne.click();
我该如何解决?
答案 0 :(得分:0)
不要点击它,而是按照here的说明使用选择:
Select select = new Select(driver.findElement(By.id("CustomerCard_state")));
select.deselectAll();
select.selectByIndex(0);
您还可以通过可见文字等进行选择。请参阅documentation on Select
答案 1 :(得分:0)
有多种方法可以从option
中选择dropdown
。
Select select = new Select(driver.findElement(By.id("CustomerCard_state")));
select.selectByVisibleText("Arizona");
OR
Select select = new Select(driver.findElement(By.id("CustomerCard_state")));
dropdown.selectByIndex(2);
OR
Select select = new Select(driver.findElement(By.id("CustomerCard_state")));
dropdown.selectByValue("AZ");
此外,您可以参考此link。 希望这会帮助你。
答案 2 :(得分:0)
当我正在调试时,此代码正在运行
解决方案#1:
这是因为,在进行调试时,应用程序和测试执行之间会发生同步。因此,请在点击下拉值之前引入一些延迟
但是当我运行我的脚本时 抛出异常如下: org.openqa.selenium.ElementNotVisibleException:元素不可见 线: WebElement dropDownOne = dropDowns.get(0);
dropDownOne.click();
解决方案#2: 这是因为,从搜索框下拉显示在运行中,因此不会附加到当前元素(就像另一帧)。因此,点击激活下拉活动以执行selenium点击操作
为此您的代码可能看起来像,
List<WebElement> dropDowns = BrowserSetup.driver.findElements(By.className("chosen-results"));
dropDownOne = dropDowns.get(0);
driver.findElement(By.className("chosen-results")).click(); // make focus on drop down results elements
dropDownOne.click();
如果解决方案#1不起作用,解决方案#2应该可以正常工作