0

我正在使用以下硒文档(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 无法解析或不是字段”

我在这里想念什么?是导入类吗?如果是,每次使用新类或方法时如何从上述文档中找到该类?

4

3 回答 3

2

pressKeys is not a function I have ever seen.

If you want to click on it, do:

.click();

If you want to type something, do:

.sendKeys("thing to type");

If you want to type a special character, do:

.sendKeys(Keys.Return);
于 2013-08-28T15:31:19.730 回答
1

您必须解决几件事:

1.你得到这个错误的原因是因为你没有在方法后面加上带有 CharSequence 参数的括号,所以编译器认为它是一个字段。

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

3.方法的拼写有错别字。没有`pressKeys()`。你想要的是`pressKey()`或`sendKeys()`(我推荐`sendKeys()`)。

4. 最后,您不需要使用 Keyboard 对象来使用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");

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

于 2013-08-28T15:34:15.247 回答
0

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

new Actions(driver).keyDown(driver.findElement(By.id("Email")), Keys.ENTER)
    .build().perform();
于 2013-08-28T15:17:47.957 回答