Ошибка с 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(), и она отлично работает.

Другие вопросы по тегам