我正在开发一个用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>
如何才能将我的文字写入此文件?
答案 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");