2015-11-02 71 views
0

我想從頁面中選擇一個隨機鏈接。我添加了一個警報來查看元素是否存在。本頁面給了「被顯示」的提示,但我對日食得到以下錯誤:元素當前不可見,所以可能不會使用Java在Selenium WebDriver中隨機選擇鏈接

這裏進行交互的代碼:

String tag = "a"; 
    boolean tagChk = driver.findElement(By.tagName(tag)).isDisplayed(); 

    if(tagChk == true){ 
     JOptionPane.showMessageDialog(null, tag +" is displayed"); 
     System.out.println(tag +" is displayed"); 
     List<WebElement> links = driver.findElements(By.tagName(tag)); 
     WebElement randomElement = links.get(r.nextInt(links.size())); 
     //JOptionPane.showMessageDialog(null, "Random link clicked"); 
     randomElement.click(); 
    } 
    else 
     JOptionPane.showMessageDialog(null, tag +" is not displayed"); 

我已經檢查了這個問題的最有名的答案,他們都沒有工作。

+0

你做一個布爾檢查'driver.findElement(By.tagName(標籤))',這是'links.get完全不同(r.nextInt(links.size()))'因此,粘貼或告訴'鏈接'中的內容會很棒! –

+0

鏈接是WebElement列表名稱。請參閱IF語句中的第三行代碼 – Alam

回答

0

當您檢查鏈接元素的可見性時,您的結果僅適用於頁面上的第一個鏈接元素。

boolean tagChk = driver.findElement(By.tagName(tag)).isDisplayed(); 

當您使用findElements得到的鏈接列表,你會得到所有的鏈接(可見和不可見)。

List<WebElement> links = driver.findElements(By.tagName(tag)); 

因此,很可能randomElement將不可見。

看來你應該先獲得可見的鏈接列表:

String tag = "a"; 

    List<WebElement> links = driver.findElements(By.tagName(tag)); 
    List<WebElement> visibleLinks = new ArrayList<WebElement>(); 
    for (WebElement link : links){ 
     if(link.isDisplayed()) 
      visibleLinks.add(link); 
    } 

    boolean tagChk = visibleLinks.size()>0; 

    if(tagChk == true){ 
     JOptionPane.showMessageDialog(null, tag +" is displayed"); 
     System.out.println(tag +" is displayed"); 
     WebElement randomElement=visibleLinks.get(r.nextInt(visibleLinks.size())); 
     //JOptionPane.showMessageDialog(null, "Random link clicked"); 
     randomElement.click(); 
    } 
    else 
     JOptionPane.showMessageDialog(null, tag +" is not displayed"); 
+0

控制檯上沒有錯誤,但沒有單擊任何鏈接。 – Alam

+0

行'randomElement.click();'執行了嗎? 點擊後你期望什麼? 您可以添加有關隨機元素索引的調試信息。 'int randomIndex = r.nextInt(visibleLinks.size());' 'WebElement randomElement = visibleLinks.get(randomIndex);' 'System.out.println(「Index of random element - 」+ randomIndex); ' 之後嘗試通過xpath - 「// a [randomIndex]」在selenium IDE(或firebug)的頁面上手動查找此元素,以便您可以看到確切的元素。可能會被其他元素重疊,但仍然可見。 –

相關問題