1

我正在使用 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 中学习了如何获取多个元素的属性? post)

那么如何在元素中查找/提取元素,然后使用 Laravel Dusk 获取它们的自定义属性?

4

2 回答 2

1

Laravel Dusk 没有提供定位元素的 API 方法。你可以通过使用底层的 webdriver API 来做到这一点。

您可以通过以下方式访问 webdriver

$browser->driver

并在另一个元素中找到一个元素。您可能需要通过 xPath 来处理它

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

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

您可以在此处阅读有关 Dusk 中选择器的更多信息

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

于 2019-03-14T09:50:18.063 回答
0

更简单的方法:

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

foreach ($advs as $adv) {

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

}
于 2021-04-18T23:40:11.070 回答