Selenium Doc - 如何使用?

时间:2013-08-28 15:07:28

标签: java selenium selenium-webdriver

我正在使用以下selenium doc(http://selenium.googlecode.com/git/docs/api/java/index.html),但不确定如何有效地使用它。例如:如果我必须使用类键盘和方法pressKeys(),那么根据这个文档我应该导入哪个类来使用pressKeys()方法。这是我的代码,但它无法正常工作

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement; 
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.chrome.ChromeDriver; 
import org.openqa.selenium.interactions.Keyboard;

public class myclass {

    public static void main(String[] args) {


System.setProperty("webdriver.chrome.driver", "C:\\selenium-java-2.35.0\\chromedriver_win32_2.2\\chromedriver.exe");        
         WebDriver driver = new ChromeDriver(); 

 //Open gmail
         driver.get("http://www.gmail.com");


driver.findElement(By.id("Email")).pressKeys

}

}

错误消息我得到的最后一行是:“pressKeys无法解析或不是字段”

我在这里错过了什么?是进口类吗?如果是的话,我每次使用新的类或方法时如何从上面的doc中找到该类?

3 个答案:

答案 0 :(得分:2)

pressKeys不是我见过的功能。

如果您想点击它,请执行:

.click();

如果要输入内容,请执行以下操作:

.sendKeys("thing to type");

如果要输入特殊字符,请执行以下操作:

.sendKeys(Keys.Return);

答案 1 :(得分:1)

有几件事需要解决:

 1. 您收到此错误的原因是因为您没有在方法后面添加带有CharSequence参数的括号,因此编译器认为它是一个字段。

 2. 即使您使用CharSequence参数添加括号,`pressKeys()`也不是可以取消WebElement的方法。你必须从键盘上调用它,除了:

 3. 该方法的拼写有拼写错误。没有`pressKeys()`。你想要的是`pressKey()`或`sendKeys()`(我建议`sendKeys()`。

 4.最后,您不需要使用键盘对象来使用sendKeys(),因为您可以直接从WebElement调用它(与pressKey()不同)。


所以,我建议这样做:

driver.findElement(By.id("Email")).sendKeys("Type whatever you want here");



如果你想使用pressKey(),你需要实例化一个键盘的实现(因为键盘是一个接口),然后从你的键盘调用pressKey()

Keyboard keyboard = //instantiate implementation here
driver.findElement(By.id("Email")).click();
keyboard.pressKey("Type whatever you want here");

虽然我真的推荐第一个解决方案。它简单得多。

答案 2 :(得分:0)

如果你已经写下了你正在使用哪个版本的Selenium,那将会很有帮助。但是,WebElement只有文本文本操作和获取属性值的方法。所以你需要使用Actions类,如

new Actions(driver).keyDown(driver.findElement(By.id("Email")), Keys.ENTER)
    .build().perform();