sendKeys()方法不发送密钥

时间:2017-03-20 18:00:27

标签: java selenium

下面提到的是我的代码,它没有将密钥发送到文本框,但它找到了正确的元素,因为光标在文本框中一直闪烁。

public class cl01 {
 public static void main(String[] args) {
  System.setProperty("webdriver.gecko.driver","C:\\Program Files\\Java\\geckodriver-v0.14.0-win32\\geckodriver.exe");
     WebDriver driver = new FirefoxDriver();
     driver.get("http://www.rediff.com/");
     String P1 = driver.getWindowHandle();
     System.out.println(P1);

    Set<String> windows = driver.getWindowHandles();
    Iterator<String> W = windows.iterator();

    while(W.hasNext())
    {
        String C1 = W.next();
        System.out.println(C1);
        if(!P1.equalsIgnoreCase(C1))
        {
          driver.switchTo().window(C1).close();
        }
    }
   driver.switchTo().window(P1);

   System.out.println("web page opened");

    //Browser's position is set
   driver.manage().window().setPosition(new Point(30, 40));
   int height = driver.manage().window().getSize().getHeight();
   System.out.println( "height of the browser is " +height);

   int width = driver.manage().window().getSize().getWidth();
   System.out.println("width of the browser is " +width);

   driver.manage().window().maximize();

   driver.findElement(By.linkText("Create a Rediffmail account")).click();
   System.out.println("sign up link opened");
   driver.findElement(By.xpath(".//*[@id='wrapper']/table[2]/tbody/tr[3]/td[3]/input")).sendKeys("ABC");

1 个答案:

答案 0 :(得分:2)

代码看起来很好。也许它的加载速度很慢,你需要为第一个元素添加一个等待。

在这种情况下,我会避免使用XPath,尤其是当嵌套层太深而且依赖于索引时。这是一个非常脆弱的定位器。我会使用如下所示的CSS选择器。

By.cssSelector("input[name^='name']")

我对此进行了测试,它对我有用。它基本上是在寻找名称以&#34; name&#34;开头的INPUT标记。该名称以自动生成的字符串结尾,但此部分在页面上是唯一的。

以下是学习CSS选择器的一些参考。 CSS选择器非常强大,花了很多时间来学习它们。

CSS Selectors Reference

CSS Selectors Tips