selenium.WebElement.sendKeys() 出错

Posted

技术标签:

【中文标题】selenium.WebElement.sendKeys() 出错【英文标题】:Error with selenium.WebElement.sendKeys() 【发布时间】:2012-03-26 05:15:23 【问题描述】:

我正在使用 Java 中的 Selenium WebDriver 编写一个小应用程序来在 Magento 网站上执行自动结帐。我正在学习 Java,所以我坚持使用 Java 来解决这个问题,而不是切换到 Ruby 或 Python。

package com.huuginn.seleniumMagento;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;

/**
 * selenium app for completing checkout in magento
 *
 */
public class App 

    public static void main( String[] args )
    
        //      MagentoCatalog c = new MagentoCatalog();
        WebDriver driver = new FirefoxDriver();

        driver.get("http://plmkt.huuginn.com/");

        WebElement searchField = driver.findElement(By.id("search"));

        System.out.println(searchField.getClass().getName());
        searchField.clear();
        searchField.sendKeys("sample");
        searchField.submit();
    

我的 getName() 行确认我正在从页面中获取我想要的元素。

编译时出现此错误:

[INFO] 编译失败 /seleniumMagento/src/main/java/com/huuginn/seleniumMagento/App.java:[25,13] org.openqa.selenium.WebElement 中的 sendKeys(java.lang.CharSequence...) 不能应用于(java.lang.String)

sendKeys 需要一个实现 CharSequence 类型的参数(java.lang.String 符合此条件),所以我不明白为什么会出现此错误。

我正在使用 Java 1.6 和 Selenium 2.19,使用 Maven 进行构建。

【问题讨论】:

您目前使用的是什么版本的 WebDriver? 我使用的是 2.19,但在测试过程中我将它升级到了 2.20。 【参考方案1】:

在创建项目时,请确保选择“使用执行环境 JRE:JavaSE-1.6。您可以成功执行测试而不会出现任何 Sendkeys 错误。100% 它将起作用。

【讨论】:

【参考方案2】:

我发现了另一种解决此问题的方法。我没有指定要编译的 Java 版本,所以 Maven 正在为旧版本编译。我将此添加到我的 pom.xml 中:

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.0.2</version>
    <configuration>
      <source>1.5</source>
      <target>1.5</target>
    </configuration>
  </plugin>

这允许我在 sendKeys() 中只输入一个文字字符串“SAMPLE”,它工作正常。

【讨论】:

【参考方案3】:

我在拨打sendKeys() 时也遇到过类似的问题。问题通常是,签名是一个 var-ary,即 CharSequence... 而不仅仅是 CharSequence

当然这对 Java 6 来说应该不是问题。我猜你的 maven 编译使用了不同的编译器设置。无论如何,您可以将代码更改为

searchField.sendKeys(new String[]  "sample" );

帮助诊断问题。

【讨论】:

以上是关于selenium.WebElement.sendKeys() 出错的主要内容,如果未能解决你的问题,请参考以下文章