使用硒化物获取元素列表
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
吗?为什么不 xpath
或 cssSelector
像这样:
List<WebElement> productName = WebDriverRunner.getWebDriver().findElements(By.xpath("//button"));
并打印 size
of productName
list 以查看是否有所有按钮可用。
只需使用 $$("<cssSelector>")
即可获取 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
吗?为什么不 xpath
或 cssSelector
像这样:
List<WebElement> productName = WebDriverRunner.getWebDriver().findElements(By.xpath("//button"));
并打印 size
of productName
list 以查看是否有所有按钮可用。
只需使用 $$("<cssSelector>")
即可获取 Selenide 元素的列表(集合)。