无法在WebElement类型中使用sendKeys“sendKeys(CharSequence [])不适用于参数(String)”

时间:2014-04-16 07:07:53

标签: java string xpath selenium-webdriver

我试图在sendKeys方法[类型WebElement]中发送“String”作为参数,但是系统将它用作char序列,所以我没有得到正确的输出。

    public static void setGridDropDownValue(Selenium selenium, WebDriver webDriver, String strGridId, int nRowIndex, int nCellIndex, String strValue)
{   
    String strXPath = "//div[@id='"+strGridId+"']//table/tbody/tr[2]/td/div/div/table/tbody/tr["+(nRowIndex+2)+"]/td["+(nCellIndex+1)+"]/";
    selenium.click(strXPath);
    selenium.doubleClick(strXPath);
    strXPath = "//select";
    Select selStatus = new Select(webDriver.findElement(By.xpath(strXPath)));
    List<WebElement> we = selStatus.getOptions();
    for(int i = 0; i< we.size();i++)
    {
        WebElement wei = we.get(i);
        System.out.println("Options : "+wei.getText().toString());
        if(wei.getText().toString().equals(strValue))
        {
            wei.sendKeys(strValue);
            break;
        }
    }           
}

例如:我的下拉列表有4个选项(部分,完成,验证,删除)。如果选择的值是“部分”并且我发送密钥“完成”,那么它工作正常,但如果选择的值是“已验证”并且我发送“完成”,则系统选择“删除”。我没有得到它的工作程序,但我认为系统正在比较字符。如果选择的值为“已验证”且我正在发送“部分”,则系统正在选择“部分”(正常工作)。

F.Y.I。 :在用户双击该元素之前,我的下拉列表是不可见的。

如果有任何方法可以使用sendKeys方法发送“String”,请告诉我。 TIA

4 个答案:

答案 0 :(得分:4)

如果您使用的是eclipse,请按照以下步骤操作:

  1. 右键单击您的java项目并选择Build Path - &gt;单击“配置构建路径...”
  2. 在项目属性窗口中:单击/选择左侧面板中的Java Compiler
  3. 在右侧面板中:将编译器合规性级别从1.4更改为1.7或更高
  4. 最后点击“应用”和“确定”
  5. enter image description here

答案 1 :(得分:1)

再次设置JRE系统库。如果您使用eclipse,请按照以下步骤操作:

  1. 转到项目属性
  2. 在左侧面板中选择 Java构建路径 - &gt;选择右侧的标签
  3. 点击/选择JRE系统库[] - &gt;单击右侧的“编辑”按钮
  4. 设置首选JRE,然后单击“完成”按钮
  5. 最后,从项目属性弹出窗口中单击“确定”按钮
  6. 您也可以通过删除和添加来进行编辑。步骤是:

    1. 右键单击项目»属性»Java构建路径
    2. 选择“库”选项卡
    3. 找到JRE系统库并将其删除
    4. 点击右侧的添加库...按钮»添加JRE系统库 (工作区默认JRE)

答案 2 :(得分:0)

您可以使用Select

Select select = (Select) driver.findElement(By.xpath(strXPath));
select.selectByVisibleText(strValue);

答案 3 :(得分:0)

如果您使用的是eclipse,请按照以下步骤操作: - 1.右键单击您的项目 - &gt;构建路径 - >配置构建路径 2.选择Java Compiler-&gt;将级别更改为1.7 3.单击Apply-&gt; OK`

我认为这应该有效。没有编译错误。