Ошибка с selenium.WebElement.sendKeys()
Я собираю небольшое приложение для выполнения автоматических проверок на сайте Magento, используя Selenium WebDriver на Java. Я работаю над изучением 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] sendKeys(java.lang.CharSequence...) в org.openqa.selenium.WebElement не может быть применяется к (java.lang.String)
sendKeys ожидает параметр типа, который реализует CharSequence (java.lang.String квалифицируется как таковой), поэтому я не понимаю, почему я получаю эту ошибку.
Я использую Java 1.6 и Selenium 2.19, делаю свою сборку с Maven.
3 ответа
У меня были похожие проблемы с звонками sendKeys()
, Проблема обычно заключается в том, что подпись является переменной, то есть CharSequence...
вместо просто CharSequence
,
Конечно, это не должно быть проблемой с Java 6. Я предполагаю, что ваша компиляция maven использует другую настройку компилятора. В любом случае вы можете изменить свой код на
searchField.sendKeys(new String[] { "sample" });
чтобы помочь диагностировать проблему.
Когда вы создаете проект, убедитесь, что вы выбрали "Использовать среду выполнения JRE: JavaSE-1.6. Вы можете успешно выполнить тестирование без любой ошибки Sendkeys. 100% это сработает.
Я обнаружил другой способ обойти это. Я не указывал версию 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>
Это позволяет мне просто использовать буквенную строку "SAMPLE" в sendKeys(), и она отлично работает.