0

要素のソースコードを 'innerHTML属性'にするために、Laravel DuskにSeleniumと同様の方法がありますか?要素のソースコードを取得

例:​​の場合のinnerHTMLは、 Hello <p>World!</p>です。

+0

[get-html-source-of-webelement-in-selenium-webdriver-using-python](https://stackoverflow.com/questions/7263824/get-html-source-of-webelement-in-selenium-webdriver- using-python) – Hamzaaton

+0

私は夕暮れの解決策を探しています。 – shaebi

答えて

2

あなたはこのようなgetAttributeと一緒element()メソッドを使用する必要がある要素のソースコードを入手するには:あなたはelements()メソッドを使用して反復処理すべき指定されたセレクタを持つ複数の要素を持っている場合には注意してください

$this->browse(function(Browser $browser) { 

    $html = $browser->visit('/') 
        ->element('div.content') 
        ->getAttribute('innerHTML'); 

    // now in $html you have HTML inside div.content element 
}); 

要素を見つけてこのようなコンテンツを取得しました:

$this->browse(function(Browser $browser) { 
    $elements = $browser->visit('/') 
         ->elements('div.content'); 

    $html = []; 
    foreach ($elements as $element) { 
     $html[] = $element->getAttribute('innerHTML'); 
    } 

    // now in $html you have array of HTML inside div.content elements 
}); 
+0

ありがとうございます。すべての利用可能なコマンド/メソッドを使って、適切なDuskのドキュメントを私に教えてください。 'element'と 'getAttribute' DuskメソッドかPHP Seleniumコマンドですか? – shaebi

+0

'vendor/laravel/dusk/Concerns'ファイルを見ることができます。 'InteractsWithElements'には、要素と要素のメソッドがあります。しかし、 'getAttribute'メソッドはFaebookWebDriverからです - これは' Facebook \ WebDriver \ Remote \ RemoteWebElement'クラスにあります –

+0

ありがとう、私はそれらを 'vendor/laravel/dusk/src/Concerns/InteractsWithElements.php'と' vendor/Facebook/WebDriver/lib/Remote/RemoteWebElement.php'を開きます。 – shaebi

2

私はSelenium innerHTMLに精通していませんが、Duskではソースコードに対して$browser->assertSourceHas($code)で直接アサートできます。

アサーションが失敗した場合、サイトの完全なソースコードが表示されます。

public function testSourceCode() 
    { 
     $this->browse(function (Browser $browser) { 
      $browser->visit('/') 
        ->assertSourceHas('Hello <p>World!</p>'); 
     }); 
    } 
+0

assertSourceHasでは、あなたはすでにソースコードを知っていますが、innerHTMLによって未知のソースコードの値を取得します。 – shaebi