java 如何在Selenium WebDriver中获取“ul”类的所有“li”元素

ddhy6vgd  于 2023-01-01  发布在  Java
关注(0)|答案(5)|浏览(214)

我是Selenium webdriver的新手。我遇到了一个要求,我必须运行我的测试,点击一个部分中的所有链接。有人能帮我用Java代码吗?附加了一个图像,显示了该特定部分的firebug属性。我尝试了下面的代码,但它返回给我一个空列表。

public static void main(String[] args) {

    WebDriver driver = new FirefoxDriver();

    driver.get("https://dev.www.tycois.com/");
    driver.manage().window().maximize();

    List<WebElement> allElements = driver.findElements(By.xpath("html/body/div[10]/div/div[1]/div[3]/ul[1]/li[5]"));
    System.out.println(allElements);

    for (WebElement element: allElements) {
        System.out.println(element.getText());
        element.click();          
    }
}

先谢了。

a5g8bdjr

a5g8bdjr1#

细节不清楚,但看起来你试图打印页脚的行业部分的链接。如果是这样,这应该工作。

driver.get("https://dev.www.tycois.com/");
WebElement industries = driver.findElement(By.cssSelector("div.columns.three.alpha > ul"));
List<WebElement> links = industries.findElements(By.tagName("li"));
for (int i = 1; i < links.size(); i++)
{
    System.out.println(links.get(i).getText());
}

你不能点击这个循环中的链接,因为一旦你点击了第一个链接,你就不在页面上了。我建议你把每个链接的URL存储在一个数组中,然后对每个链接使用driver.get(url)。或者你可以把预期的URL存储在一个数组中,然后把链接的URL与预期的URL进行比较,而不必导航。选择权在你...

xmjla07d

xmjla07d2#

JeffC的解决方案与下面详细介绍的调整一起工作-

driver.get("https://dev.www.tycois.com/");
WebElement industries = 
driver.findElement(By.cssSelector("div.columns.three.alpha > ul"));
List<WebElement> links = industries.findElements(By.tagName("li"));
for (int i = 0; i < links.size(); i++)
{
    System.out.println(links.get(i).getText());
}

上面的另一个答案,我不能发表评论,因为我是新来的网站有

for(int i=1; i < links.size(); i++)

但是,这会遗漏列表中的第一个元素。建议使用的修复方法是-

for(int i=1; i <= links.size(); i++)

将导致IndexOutOfBounds异常。
要解决这个问题,只需将迭代器设置为从0而不是1开始

gmxoilav

gmxoilav3#

您可以使用像这样的例子:

driver.findElements(By.xpath("//li[contains(@class,'managed-services')]/ul/li/a"));

使用附加到html根的XPath通常是个坏主意,即绝对xpath,您应该始终尝试使用尽可能短的选择器,即相对xpath。
还请记住,如果链接是隐藏的,您需要触发操作,这使他们-像打开菜单的例子。

a9wyjsp7

a9wyjsp74#

你可以试试下面的代码。
只需根据应用程序更改xpath即可。

List<WebElement> liElements = driver.findElements(By.xpath(".//*[@id='fk-mainhead-id']/div[2]/div/div/ul/li"));
        System.out.println(liElements);

        for(int i=1; i <= liElements.size(); i++)
        {
            WebElement linkElement = driver.findElement(By.xpath(".//*[@id='fk-mainhead-id']/div[2]/div/div/ul/li[" + i + "]/a"));
            System.out.println(linkElement.getText());      

        }
58wvjzkj

58wvjzkj5#

WebElement industries = driver.findElement(obj.getElement("history_list"));
        List<WebElement> links = industries.findElements(By.tagName("li"));
        boolean a = false;
        Thread.sleep(10000);
        for (WebElement option : links) {
            System.out.println("value =" + option.getText());
            String s = option.getText();
            if (s.equals(new_site_name)) {
                a = true;
                break;
            } else {
                continue;
            }
        }

相关问题