【问题标题】:Laravel Dusk how to find elements inside elements?Laravel Dusk 如何在元素中查找元素?
【发布时间】:2019-03-14 08:39:51
【问题描述】:

我正在使用 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) {

}

问题是,我怎样才能在这些.selectable 类中找到每个具有.custom-item 类的元素。此外,我想获得.custom-item 的属性之一。我以前是这样弄的:

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

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

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

【问题讨论】:

  • 你能用$browser->elements('.selectable .custom-item')吗?还是必须分两步?

标签: php laravel laravel-dusk laravel-5.8


【解决方案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/

【讨论】:

    【解决方案2】:

    更简单的方法:

    $advs = $browser->elements('CSS_SELECTOR');
    
    foreach ($advs as $adv) {
    
       // for example
       $adv->click();
    
    }
    

    【讨论】:

      猜你喜欢
      • 2019-09-24
      • 2020-11-27
      • 1970-01-01
      • 1970-01-01
      • 2018-07-12
      • 1970-01-01
      • 1970-01-01
      • 2019-08-04
      • 2019-10-18
      相关资源
      最近更新 更多