Laravel Dusk如何在元素内部找到元素?

时间:2019-03-14 08:39:52

标签: php laravel laravel-dusk laravel-5.8

我正在使用Laravel 5.8,黄昏。我想在一个类中找到某些元素。

因此,假设我提取了selectable类的页面上的每个元素。

$browser->visit('https://www.website.com')
        ->script('window.scrollTo(0, 10000);');

$elems = $browser              
          ->pause(1000)
          ->elements('.selectable');

此后,我将遍历这些元素,如下所示:

foreach ($elems as $elem) {

}

问题是,如何在这些.custom-item类中找到.selectable类的每个元素。另外,我想获得.custom-item的属性之一。我以前是这样得到的:

$elem->getAttribute('custom-attribute');

(从此Laravel Dusk how to get multiple element's attributes?帖子中学到)

那么我该如何在元素内部查找/提取元素,然后使用Laravel Dusk获得其自定义属性?

2 个答案:

答案 0 :(得分:1)

Laravel Dusk不提供用于定位元素的API方法。您可以利用基础的webdriver API来做到这一点。

您可以通过

访问网络驱动程序
$browser->driver

找到另一个元素的元素。您可能需要通过xPath进行处理

$browser->driver->findElements(WebDriverBy::xpath('//*[@class="selectable"][@class="custom-attribute"]'));

我在上面的示例中组成了xpath。您可以通过检查chrome开发人员工具中的元素来找到确切的xpath。

您可以在此处详细了解黄昏中的选择器

https://www.5balloons.info/understanding-selectors-laravel-dusk-browser-testing/

答案 1 :(得分:0)

更简单的方法:

$advs = $browser->elements('CSS_SELECTOR');

foreach ($advs as $adv) {

   // for example
   $adv->click();

}