我想用Selenium在不使用xpath或css路径的情况下从Amazon页面定位元素

问题描述 投票:0回答:2

步骤1。转到:https://www.amazon.com/international-sales-offers/b/?ie=UTF8&node=15529609011&ref_=nav_navm_intl_deal_btn

步骤2。尝试找到复选框带检查器的书本按钮

步骤3.单击复选框按钮以进行选择

步骤4. enter image description here

我尝试迭代并找到唯一的标识符“ Books”。如果您知道另一种点击方法,那就无需重复。我使用了以下代码行:

List<WebElement> elements = new ArrayList<WebElement>(obj.findElements(By.cssSelector("span.a-label.a-checkbox-label")));
    for (WebElement element : elements) {
        if (element.getText() == "Books"){
            System.out.println("");
            element.click();
        }
else
            System.out.println("Condtition from if is not true");
    }
java html selenium automation css-selectors
2个回答
0
投票

您可以通过在xpath中使用其文本直接找到该元素。您可以像这样:

WebElement element = driver.findElement(By.xpath("//div[@id='widgetFilters']//span[@class='a-declarative']//span[contains(text(),'Books')]"));
element.click();

如果您要对xpath进行参数化并想使用字符串来获取它,则可以像这样:

String filterName = "Books";
WebElement element = driver.findElement(By.xpath("//div[@id='widgetFilters']//span[@class='a-declarative']//span[contains(text(),'"+filterName+"')]"));
element.click();

0
投票

您可以不进行迭代而实现,请通过xpath使用以下值来定位元素://label[contains(., 'Books')]//input

WebElement element = driver.findElement(By.xpath("//label[contains(., 'Books')]//input"));
element.click();
© www.soinside.com 2019 - 2024. All rights reserved.