在下面的代码中,我想检查元素是否存在于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方法,但在这种情况下它无法帮助我。
答案 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/