是否可以使用Selenium 2 Webdriver同时处理两个webelements?

时间:2011-11-01 10:12:11

标签: testing automation webdriver selenium-webdriver

将textarea包装在父div元素中。 只有当父母用鼠标悬停时,此textarea才会变得可见。

我尝试了以下内容:

WebElement pr = driver.findElement(parent);
动作构建器=新动作(驱动程序);

builder.moveToElement(PR).peform();
driver.findElement(textarea).sendKeys(text);

但是当webdriver开始寻找子textarea时,它失去了对父母的关注。 当父母一直徘徊时,无法做一些能够将文本发送到子元素的东西。有可能吗?

2 个答案:

答案 0 :(得分:0)

你必须使用javascript - 我不认为webdriver一次可以处理多个元素 我看到你的选择:

  1. 您可以尝试使用javascript修改textarea的'style'属性以强制它可见,然后以常规方式(即sendkeys)在webdriver中与它进行交互。

  2. 通过javascript设置textarea的文本,请注意,您不会触发任何事件,因为您实际上并没有输入任何内容。

答案 1 :(得分:0)

您可以使用Actions API执行这两项工作,将鼠标悬停在父级上,然后输入子级,如下所示。

Actions builder = new Actions(driver);      
WebElement parent = driver.findElement(By.id("parent"));
WebElement child = driver.findElement(By.id("child"));
Action hoverAndType = builder.moveToElement(parent)
                      .sendKeys(child, "Text to type in the child")
                      .build();
hoverAndType.perform();