1

Selenium2Java API Version 2.53.1chrome driver Version 2.24を使用していくつかの値を出力しています。Selenium Java APIなぜ、driver.findElement(By.tagName( "title"))。getText()は常に空を返します。

タグの場合:<title>test</title> 関数 driver.findElement(By.tagName("title")).getText();は常に空を返します。

私の質問は、API関数を再び働かせる方法です。

BTW:Selenium3はベータ版で、chromedrivergeckodriverで壊れています。一方

機能は: - 正しい値を返し

driver.findElement(By.tagName("title")).getTagName();driver.getTitle();

私は無駄にJavaScriptコードで問題を回避しようとした:

JavascriptExecutor js; 
    if (driver instanceof JavascriptExecutor) { 
     js = (JavascriptExecutor)driver; 

     a_tag_name_title = (ArrayList<RemoteWebElement>) js.executeScript("return document.getElementsByTagName('title');"); 


     System.out.println("Is empty? " + a_tag_name_title.isEmpty()); 
     for (RemoteWebElement object: a_tag_name_title){ 
      System.out.println("Title tag: " + object.getText()); 
     } 
     found = false; 

     for (RemoteWebElement object: a_tag_name_title){ 

      found = object.getText().contains("title"); 
     } 
     assertTrue("Title tag not found", found); //sanitiy check if "getElementsByTagName" is working, too 

    } 

答えて

0

innerText<title>内部のタグがありますページに表示されない間、実際にWebElement#getText()は、ページ上の要素の可視innerTextを返します。なぜあなたは空のテキストを取得していますか?

は、その要素が表示されているか、使用しない WebElement#getText()を使用する前に確認するには: -

driver.findElement(By.tagName("title")).isDisplayed(); 

あなたは声明の上に使用している場合は、それは常にだfalseを返し見ることができます。これを回避するには

、あなたは以下のようにWebElement#getAttribute("textContent")またはWebElement#getAttribute("innerText")を使用することができます -

driver.findElement(By.tagName("title")).getAttribute("textContent") 

driver.findElement(By.tagName("title")).getAttribute("innerText") 
+1

どうもありがとう! bye ... – Leder

+0

'driver.getTitle();'を使うほうがずっと簡単なようです。 – JeffC

+0

@JeffCそうです、OPはすでにそれを使っていますが、それはうまくいきますが、なぜdriver.findElement(By.tagName( "title")).getText();それを指摘してくれてありがとう –

関連する問題