mickey
mickey

Reputation: 190

The method sendKeys(CharSequence[]) in the type WebElement is not applicable for the arguments (String)

I am trying to send a String to the sendkeys() method, but it is not accepting and throwing an error as

my codes follows:

package healthcare;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.Select;

import com.thoughtworks.selenium.Selenium;
import com.thoughtworks.selenium.webdriven.WebDriverBackedSelenium;

public class MailRegister_Webdriver {
    public WebDriver driver;
    public Selenium selenium;
    public void openURL(){
//System.setProperty("webdriver.chrome.driver", "F:\\Library\\chromedriver.exe");       
driver=new FirefoxDriver();
selenium=new WebDriverBackedSelenium(driver, "http://mail.in.com");
driver.get("http://mail.in.com");
    }
    public void register() throws Exception{
//driver.findElement(By.cssSelector("input.registernow")).click();
selenium.click("css=input.registernow");
Thread.sleep(3000);
driver.findElement(By.id("fname")).sendKeys("Nagesh");
selenium.select("day", "10");
selenium.select("month", "Jun");
new Select(driver.findElement(By.id("year"))).selectByVisibleText("1999");
Thread.sleep(1000);
driver.findElement(By.xpath("(//input[@name='radiousername'])[5]")).click();    
Thread.sleep(2000);
        driver.findElement(By.id("password")).sendKeys("nag123");
        driver.findElement(By.id("repassword")).sendKeys);
        driver.findElement(By.id("altemail")).sendKeys();
        driver.findElement(By.id("mobileno")).sendKeys("7894561230");
        driver.findElement(By.id("imageField")).click();
}

    public static void main(String[] args) throws Exception {
        // TODO Auto-generated method stub
        MailRegister_Webdriver m=new MailRegister_Webdriver();
        m.openURL();
        m.register();
    }
}

Can somebody help on this, Why Sendkeys() method is not taking String values as arguments?

Upvotes: 11

Views: 109039

Answers (7)

Mukesh otwani
Mukesh otwani

Reputation: 831

There are two possible solution for this

1- Change the compiler version from old version to 1.5 or greater.

2- Change the JRE version from JRE8 to JRE7.

I have created a detailed article on this may be it will help.

http://learn-automation.com/solution-for-sendkeyscharsequence-in-selenium/

Upvotes: 2

zevij
zevij

Reputation: 2446

Depending on the version of java you need to either convert the primitive (i.e. Char) to String (look here: http://tech.deepumohan.com/2013/03/java-how-to-convert-primitive-char-to.html)

Or switch to a java version that would do it for you (see here: http://java-performance.info/changes-to-string-java-1-7-0_06/)

Upvotes: 0

Ripon Al Wasim
Ripon Al Wasim

Reputation: 37756

Set the JRE System Library again. If you use eclipse follow the steps below:

  1. Go to project properties
  2. Select Java Build Path at the left panel -> Select Libraries tab at the right
  3. Click/select JRE System Library[] -> Click Edit button at the right side
  4. Set your preferred JRE and click Finish button
  5. Lastly click OK button from the project properties pop up window

Instead of editing you can also do by deleting and adding. The steps are:

  1. Right-click on project » Properties » Java Build Path
  2. Select Libraries tab
  3. Find the JRE System Library and remove it
  4. Click Add Library... button at right side » Add the JRE System Library (Workspace default JRE)

Upvotes: -1

Venkatesh Pothula
Venkatesh Pothula

Reputation: 358

It has a simple solution. Change your compiler compliance level from 1.4 to 1.7.

Follow these steps in your eclipse:

  1. Right click on your java project and select Build Path -> Click on
    Configure Build Path...
  2. In project properties window, Click/select Java Compiler at the left
    panel
  3. At the right panel, change the Compiler compliance level from 1.4 to 1.7
    (Select which is higher version in your eclipse)
  4. Lastly Click on Apply and OK

Now check your code. it will never show the same error.

Upvotes: 34

summer
summer

Reputation: 39

element.sendKeys(new String[]{"Hello, selenium"});

My code looks like this, it's working.

Upvotes: 3

Abhishek Yadav
Abhishek Yadav

Reputation: 459

You can try by replacing your following lines of code:

        driver.findElement(By.id("password")).sendKeys("nag123");
        driver.findElement(By.id("repassword")).sendKeys);
        driver.findElement(By.id("altemail")).sendKeys();
        driver.findElement(By.id("mobileno")).sendKeys("7894561230");
        driver.findElement(By.id("imageField")).click();

to

        driver.findElement(By.id("password")).sendKeys("nag123");
        driver.findElement(By.id("repassword")).sendKeys("");
        driver.findElement(By.id("altemail")).sendKeys("");
        driver.findElement(By.id("mobileno")).sendKeys("7894561230");
        driver.findElement(By.id("imageField")).click();

Upvotes: 0

Gyorgy.Hegedus
Gyorgy.Hegedus

Reputation: 361

Try to click into the WebElement before you sending keys to it:

public static void login(WebDriver driver, String userName, String password) {
    driver.get("loginPage.html");
    Thread.sleep(3000);
    driver.findElement(By.id("username")).click();
    driver.findElement(By.id("username")).clear();
    driver.findElement(By.id("username")).sendKeys(userName);
    Thread.sleep(TestConfiguration.time);
    driver.findElement(By.id("password")).click();
    driver.findElement(By.id("password")).clear();
    driver.findElement(By.id("password")).sendKeys(password);
    Thread.sleep(3000);
    driver.findElement(By.name("login")).click();
    Thread.sleep(3000);
}

You should use clear() method to clear the input field before using sendKeys().

Upvotes: 0

Related Questions