2016-12-15 8 views
0

を使用して、<「CHK」=のラベル>タグ内にあるチェックボックスをクリックすることができません:私はデータセルTD内のチェックボックスをクリックしようとしていますが、毎回私は取得していますセレン

org.openqa.selenium.ElementNotVisibleException

例外、 問題は有効ですが表示されません。

<table id='table1'> 
    <thead></thead> 
    <tbody> 
     <tr> 
      <td> 
      <input id='id1' class='class' type='checkbox'> 
      <label for='chk1'> 
      :: before 
      </label> 
      </td> 
     </tr> 
     <tr> 
      <td> 
      <input id='id2' class='class' type='checkbox'> 
      <label for='chk2'> 
      :: before 
      </label> 
      </td> 
     </tr> 
     <tr> 
      <td> 
      <input id='id3' class='class' type='checkbox'> 
      <label for='chk3'> 
      :: before 
      </label> 
     </td> 
     </tr> 
    </tbody> 
</table> 

が、コードの作品とリターン以下:

以下

は、ページのソースです。

System.out.println("isDisplayed()"+ td_lblcollection.get(0).isDisplayed()); --> False 
System.out.println("isEnabled()"+td_lblcollection.get(0).isEnabled()); --> True 
System.out.println("isSelected()"+td_lblcollection.get(0).isSelected()); --> False 

手動でチェックボックスが見えると選択することができるが、IsDisplayedは偽であり、要素が見える例外がスローされません。

すべての方法を試してみましたが、すべてが失敗します。ロケータは良いです。

ロケータ:

@FindBy(xpath = "//*[@id='table1']/tbody/tr") 
List<WebElement> tblLookupSites; 

方法1:表中のループ

for (WebElement trElement : tblLookupSites) { 
    List<WebElement> td_collection = trElement.findElements(By.xpath("td")); 
for (WebElement tdElement : td_collection) { 
    List<WebElement> td_lblcollection =tdElement.findElements(By.xpath("label")); 
    td_lblcollection.get(0).click(); 
} 
} 

方法2:表中のループ

for (WebElement trElement : tblLookupSites) { 
    List<WebElement> td_collection = trElement.findElements(By.xpath("td")); 
for (WebElement tdElement : td_collection) { 
    List<WebElement> td_lblcollection =tdElement.findElements(By.xpath("input")); 
    td_lblcollection.get(0).click(); 
} 
} 

法3:表中のループ

for (WebElement trElement : tblLookupSites) { 
    List<WebElement> td_collection = trElement.findElements(By.xpath("td")); 
for (WebElement tdElement : td_collection) { 
    List<WebElement> td_lblcollection =tdElement.findElements(By.id("id1")); 
    td_lblcollection.get(0).click(); 
} 
} 

このチェックボックスをクリックする方法をお勧めします。

UIはvue.jsを使用して作成されます。

答えて

0

この方法のようないくつかのjavascriptを注入することにより、非可視の要素をクリックしJavascriptExecutorインターフェースを試してみてください - それはWORKS-場合

WebElement element = driver.findElement(By.xpath("//input[@id='id1']")); 
JavascriptExecutor js =(JavascriptExecutor)driver; 
js.executeScript("arguments[0].click();", element); 

はまた、(これは私のプロジェクト構造と同じ種類で動作している)別の方法を試してみてください -

driver.findElement(By.xpath("//label[@for='chk1']")).click(); 
+0

私はこれを以前に試してみましたが、今もう一度試しましたが、まだ動作しませんでした。 – Leo

+0

これを試してください、それは助けるかもしれません - 'WebElement element = driver.findElement(By.xpath(" // input [@ id = 'id1'] ")); \t \t JavascriptExecutor js =(JavascriptExecutor)driver; \t \t js.executeScript( "arguments [0] .click();"、要素); ' – NarendraR

+0

Awesome! Javascriptが動作しました、ありがとうNarendra _/| \ _。 – Leo

1

次のものを使用してください。

driver.findElement(By.xpath( "// * [@ id = 'id1']"))。

関連する問題