Laravel Dusk 如何在元素内部查找元素?
Laravel Dusk how to find elements inside elements?
我正在使用 Laravel 5.8、Dusk。我想在 class 中找到某些元素。
假设我用 selectable
的 class 提取了页面上的每个元素。
$browser->visit('https://www.website.com')
->script('window.scrollTo(0, 10000);');
$elems = $browser
->pause(1000)
->elements('.selectable');
在此之后,我像这样遍历这些元素:
foreach ($elems as $elem) {
}
问题是,如何在这些.selectable
class中找到每个带有.custom-item
的class的元素。此外,我想获得 .custom-item
的属性之一。我以前是这样得到它的:
$elem->getAttribute('custom-attribute');
(从中学习到post)
那么如何在元素中 find/extract 元素然后使用 Laravel Dusk 获取它们的自定义属性?
Laravel Dusk 不提供 API 定位元素的方法。您可以利用底层网络驱动程序 API.
您可以通过
访问网络驱动程序
$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/
更简单的方法:
$advs = $browser->elements('CSS_SELECTOR');
foreach ($advs as $adv) {
// for example
$adv->click();
}
我正在使用 Laravel 5.8、Dusk。我想在 class 中找到某些元素。
假设我用 selectable
的 class 提取了页面上的每个元素。
$browser->visit('https://www.website.com')
->script('window.scrollTo(0, 10000);');
$elems = $browser
->pause(1000)
->elements('.selectable');
在此之后,我像这样遍历这些元素:
foreach ($elems as $elem) {
}
问题是,如何在这些.selectable
class中找到每个带有.custom-item
的class的元素。此外,我想获得 .custom-item
的属性之一。我以前是这样得到它的:
$elem->getAttribute('custom-attribute');
(从中学习到
那么如何在元素中 find/extract 元素然后使用 Laravel Dusk 获取它们的自定义属性?
Laravel Dusk 不提供 API 定位元素的方法。您可以利用底层网络驱动程序 API.
您可以通过
访问网络驱动程序$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/
更简单的方法:
$advs = $browser->elements('CSS_SELECTOR');
foreach ($advs as $adv) {
// for example
$adv->click();
}