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() 出错的主要内容,如果未能解决你的问题,请参考以下文章