无法单击textarea

时间:2015-12-18 06:29:49

标签: java selenium selenium-webdriver automation textarea

我正在开发一个用Java编码的项目,我正在使用Selenium来自动化流程。
我有这两个textareas,我没有任何问题将我的文本发送到第一个区域,因为我可以通过id找到它。

<td class="tdLeft">:</td>
<td class="tdRight">
<textarea placeholder="" id="add_links" name="links[]"></textarea>
</td>

driver.findElementById("add_links").sendKeys("\n");

但是我有第二个文本区域存在问题。

<tr>
<td class="tdLeft">:</td>
<td class="tdRight">
<textarea name="links[]"></textarea>
</td>
</tr>

如何才能将我的文字写入此文件?

6 个答案:

答案 0 :(得分:0)

如果您知道textarea索引,可以尝试以下方式,

driver.findElementsByXPath("//textarea").get(1).sendKeys("\n");

答案 1 :(得分:0)

您有2个textareas具有相同的name属性值。您可以为第二个文本区域执行的操作如下:

List<WebElement> linksize=null;
 String arraylinks[]=null;
linksize = driver.findElements(By.name("links[]")); 
    int linksCount = linksize.size();
    arraylinks= new String[linksCount];
    for(int i=0;i<linksCount;i++)
    {

    arraylinks[i] = linksize.get(i).getAttribute("id");
    if(arraylinks[i].isEmpty())
    {

        System.out.println("I am second text area"+arraylinks[i]);
        linksize.get(i).sendKeys("Hello");


    }

    }

这里我们得到text area具有共同属性,循环遍历它们并仅向没有id的文本发送文本。它对我有用。试一试。

答案 2 :(得分:0)

试试这个xpath,EntityManager

答案 3 :(得分:0)

您可以尝试使用cssSelectors

driver.findElement(By.cssSelector("textarea[name='links[]']"));

答案 4 :(得分:0)

很长的路要走:

List<WebElement> txtAreas = driver.findElements(By.xpath("//textarea[name='links[]']"));
for (WebElement txtArea : txtAreas) { 
    if (!txtArea.getAttribute("id").equalsIgnoreCase("add_links")) {
        txtArea.sendKeys("\n");
        break;
    }
}

最简单的方法是:

WebElement txtArea = driver.findElement(By.xpath("//textarea[name='links[]' and not(@id = 'add_links')]"));
txtArea.sendKeys("\n");

答案 5 :(得分:0)

我找到了doubleclick,然后将sendkey作为解决方案:D

Actions action = new Actions(driver);
action.moveToElement(findElement(locator)).doubleClick().build().perform();
locator.sendKeys("Text");