如何检查laravel黄昏测试中是否存在元素?

时间:2017-06-03 08:05:34

标签: laravel-dusk

在下面的代码中,我想检查元素是否存在于XPath中,然后才能执行代码。

if($browser->driver->findElement(WebDriverBy::xpath('/html/body/div[1]/div/section/div[3]/div[2]/div/table/tbody/tr['.$i.']/td[2]'))!==null) 
{ 
    $sort=$browser->driver->findElement(WebDriverBy::xpath('/html/body/div[1]/div/section/div[3]/div22]/div/table/tbody/tr['.$i.']/td[2]'))->gettext();
echo $sort; 
}

否则请建议是否有其他方法来检查laravel黄昏中的元素。 附:我试过whenAvailable方法,但在这种情况下它无法帮助我。

4 个答案:

答案 0 :(得分:1)

/*
* check element exist
* if it doesn't not exist
* will throw exception
*
* @retuen void
*/

try {
    $this->browse(function (Browser $browser) {
        $elementExist = $this->assertNotNull($browser->element('#idString'));

        if (empty($elementExist)) {
            \Log::info('element exist') 
        }
    }
} 
catch (\Exception $e) {
    \Log::info($e->getMessage());
}

答案 1 :(得分:1)

找到了另一个更好且可行的解决方案:

if ($browser->element('#IDString')) {
}

答案 2 :(得分:0)

当我想检查元素是否存在时,我通常会这样做:

$this->browse(function (Browser $browser) {
    $this->assertNotNull($browser->element('#idString'));
}

答案 3 :(得分:0)

Laravel-Dusk提供了两个简单的方法assertVisible和assertPresent。

assertVisible确保该元素位于网页的可见视口中。 assertPresent确保该元素存在于页面的源代码中。

您可以传入任何html选择器,以检查该元素是否可见。

/** @test */
public function assert_that_home_page_opens_up(){
    $this->browse(function ($browser) {
        $browser->visit('/')
            ->assertPresent('#my-wrapper')
            ->assertVisible('.my-class-element')
    });
}

但是,只有在要查找的元素上附有方便的选择符(类或ID)时,您才可以使用这些方法。

如果要检查元素是否存在于特定的xPath怎么办?

您可以确保$browser对象上的驱动程序实例可以直接调用Facebook Web驱动程序API提供的方法。

$this->assertTrue(
    count(
      $browser->driver->findElements(WebDriverBy::xpath('//*[@id="home-wrapper"]'))
     ) > 0);

来源:https://www.5balloons.info/how-to-check-if-element-is-present-on-page-using-laravel-dusk/