Question

The following instruction

Selenium.typeKeys("location", "gmail.com");

types the string gmailcom instead of gmail.com.

What's happening there?

From the comments:
I am trying to simulate autofill and the only way to do it currently on selenium is to combine type and typeKeys. eg:

selenium.type("assigned_to", split[0]+"@");
selenium.typeKeys("assigned_to", "gmail.com");

Now my question is why typeKeys doesn't type the 'dot' in between gmail.com?

Was it helpful?

Solution

Have you tried using the Native key functions and javascript char codes? I couldn't get a 'period' character to work using them (char 190), but I got the decimal (char 110) to work just fine, and the text box shouldn't have a problem with either.

selenium.Focus("assigned_to");
selenium.Type("assigned_to", split[0]+"@");
selenium.TypeKeys("assigned_to", "gmail");
selenium.KeyPressNative("110");
selenium.TypeKeys("assigned_to", "com");

OTHER TIPS

Use the type method.

From the javadoc for typekeys:

this command may or may not have any visible effect, even in cases where typing keys would normally have a visible effect

...

In some cases, you may need to use the simple "type" command to set the value of the field and then the "typeKeys" command to send the keystroke events corresponding to what you just typed.

We had similar problems using typekeys in selenium python.

One workaround we figured to resolve this issue is to use the combination of 'type' and 'type_keys'. As you might be aware, type does not have such issues.

We did this in our selenium python script and it works just fine.

For example: If there's an email address to be entered in a text box: test.me@test.me.uk

Then do

type(locator,’test.me@test.me.’)
type_keys(locator,’uk’)

Maybe a very crude way to do, but it did the job.

Hope this helps someone else with a similar problem.

Also try to set focus on element before write on it.

selenium.focus(locator);
selenium.typeKeys(locator, value);

it did function in my case, handling a input type=password.

Suppose the string to be typed using typeKeys is "abc.xyz.efg". Then, we can use type and typeKeys commands to write the given string.

type(locator,"abc.xyz.")
typeKeys(locator,"efg")

The above two steps are useful whenever you want to select an element in drop down box, and the drop down pops down only if we use typeKeys command.

I'm also seeing this behaviour when using Selenium RC (C#), and with different characters ('y' for example which also seems to remove the character follow it from the typing action..)

For some situations it is entirely possible to get around the issue by typing out the keys with the TypeKeys or KeyPress functions, but I haven't managed to find a solution that works when you want to type text in a field, enter control characters ([Enter] or a newline for example), and then type more text.. (using the 'Type' function in this case simply overwrites the field contents...).

If anyone manages to find a reasonable solution to this issue, please add it to this question as it's starting to come up in google now and would probably help alot of people out.. (I'd start a bounty if I could..)

This is an open bug in Selenium (bug SEL-519).

After some fiddling around with it, I finally managed to enter '.' into a textarea by using JavaScript. Execute something like window.document.getElementById('assigned_to').value += '.' via storeEval or the like.

I got the same behaviour but fixed it by passing a variable to the Type command instead of a string.

string email = @"name@gmail.com";
selenium.Type(inputfield, email);

It works like a charm!

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top