没有元素硒的Sendkeys Java

时间:2019-03-15 13:29:02

标签: java

我正在尝试编写一个简单的基于Java的硒代码,在该代码中我将加载页面,为用户名和密码提供所需的值。

页面加载用户名后,页面已经聚焦,但我可以在用户名或密码中输入值

Using MAC - Eclipse 

对于编码感到抱歉,我是陌生的,因此将非常感谢您提供任何帮助

public static void main(String[] args) throws InterruptedException {
        // TODO Auto-generated method stub

    WebDriver driver = new FirefoxDriver();
    driver.get("http://dc1.racbusinessclub.co.uk/login/");
    driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);

    Thread.sleep(2000);
    driver.findElement(By.tagName("body")).sendKeys("rac-dc");
    Thread.sleep(2000);

    driver.findElement(By.tagName("body")).sendKeys(Keys.TAB);
    Thread.sleep(2000);

2 个答案:

答案 0 :(得分:0)

即使该字段已经聚焦,您也必须指定希望“发送键”到的元素。因此,获取用户名字段的ID,然后然后使用sendKeys,如下所示:

driver.findElement(By.id("userNameInputBox")).sendKeys("rac-dc");

此外,值得注意的是,在脚本中使用Thread.sleep是不好的做法。如果您在等待什么,请检查该元素的存在,而不是等待任意时间。

编辑:实际上,在上方看到您的答复,我可以看到您正在尝试与警报弹出窗口进行交互,您可以使用以下方法进行操作:

driver.switchTo().alert().sendKeys(yourString);

或者,您可以完全跳过该页面,并使用URL中的凭据导航至页面-请记住不要对这些内容进行硬编码:

driver.get("http://username:password@http://dc1.racbusinessclub.co.uk/");

答案 1 :(得分:0)

下面是完成此操作的基本方法。

driver.findElement(By.id("username")).sendKeys(username);
driver.findElement(By.id("password")).sendKeys(password);
pause(3);
WebElement button = driver.findElement(By.tagName("button"));
button.sendKeys(Keys.RETURN);

登录后,您可以声明如下的网址

Assert.assertTrue(driver.getCurrentUrl().endsWith("/yourURL"));

您可以通过右键单击页面并选择检查从浏览器中获取用户名和密码ID。