使用硒化物获取元素列表

Get list of an elements using Selenide

我正在尝试在网站上找到一个元素并获取所有元素。为此,我使用 Selenide/Selenium。我正在寻找的元素无法通过一个 class 找到,因此我试图找到一个具有两个 class(父元素和子元素)的元素。仅使用 Selenide,我可以使用以下方法轻松定位元素:

SelenideElement basketIcon = $(By.className("buttons")).$(byClassName("btn-cart"))

这肯定会给我一个要素。但是我怎样才能找到一个元素数组呢? List<SelenideElement> productName1 = WebDriverRunner.getWebDriver().findElements(By.className("")); 但它不起作用,我也试过: List<WebElement> productName = WebDriverRunner.getWebDriver().findElements(By.className("buttons")); 但是在这里我如何添加另一个 class 来定位元素? $(byClassName("btn-cart"))?或者有其他方法吗?

我也尝试过使用 ElementsCollection elements = WebDriverRunner.getWebDriver().findElements(By.className("")); 但它不起作用...

编辑: 我有一个名为“DriverFactory”的 class,用于打开浏览器:

public static void openBrowser(String browserName, String url) throws Exception {
    
        WebDriverManager.chromedriver().browserVersion(chromeversion).setup();
        Configuration.browser = "Chrome";
        Configuration.startMaximized = true;
        driver.get(url);
    }

另一个class,我在其中定义定位器:

public class EE_MonitorCategoryElements extends DriverFactory {


protected static List<WebElement> productName = getWebDriver().findElements(By.id("asddsa"));
}

和一个测试 class:

@Test
public void ads() throws Exception {
    DriverFactory.openBrowser("Chrome", "https://google.ge");
}

当我使用“getWebDriver()”添加最后一个元素定位器并尝试 运行 测试时,它给了我一个错误:没有测试被绑定,我 delete/comment getWebDriver 行,它正在工作

您必须使用 className 吗?为什么不 xpathcssSelector

像这样:

List<WebElement> productName = WebDriverRunner.getWebDriver().findElements(By.xpath("//button"));

并打印 size of productName list 以查看是否有所有按钮可用。

只需使用 $$("<cssSelector>") 即可获取 Selenide 元素的列表(集合)。