2015-12-18 60 views
0

我正在研究一個用Java編碼的項目,我正在使用Selenium來自動化一個過程。
我有這兩個textareas,我沒有任何問題發送我的文本到第一個區域,因爲我可以通過id找到它。無法點擊textarea

<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

如何ab在第二個文本區域添加不同的'id'。 – Vishrant

+0

或檢查硒中是否有方法獲取具有名稱的元素對象。 – Vishrant

回答

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; 
    } 
} 

簡單的方法是:

​​
0

如果你知道textarea的指數,你可以嘗試以下方法,

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

您的解決方案是一條線,工作正常.. :-)謝謝 – Occ

+0

不客氣。如果你真的喜歡這個答案,你可以自由上傳。 – dullpointer

0

你有2個文本域與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發送文本。它爲我工作。試一試。

0

試試這個XPath,driver.findElement(By.xpath("//tr/td[2]/textarea[@]"))

+0

給定選擇器// tr/td [2]/textarea [@]無效或不導致WebElement。 – Occ

0

您可以通過使用cssSelectors嘗試:

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