获取所有Nav元素,然后单击每个导航链接

时间:2019-11-20 23:38:17

标签: java selenium selenium-webdriver

我尝试了太多不同的方法,但确实无法获得所需的结果。

我需要创建一个自动化工具来测试并单击所有侧栏导航链接,这些链接会根据用户的使用来更改内容。因此,我需要收集元素并将其存储到List中并单击每个元素,但似乎无法正常工作。尝试导航,但由于仍位于同一URL上,因此无法用作点击。

这是我尝试过的代码段:

public void test2() throws InterruptedException {

        driver.get("URL");
        owaLoginPage.loginOwnerAccount("var.EMAIL", var.DEFAULT_PASSWORD);
//        wait.untilElementVisible(owaDashboardPage.getOwnerWebAccountDropdown());
        wait.impWait(50);
        List<WebElement> linksize = driver.findElements(By.xpath("//div[@class='sidebar-sticky']//a"));
        linksCount = linksize.size();
        System.out.println("Total no of links Available: "+linksCount);
        links= new String[linksCount];
        System.out.println("List of links Available: ");
// print all the links from webpage
        for(int i=0;i<linksCount;i++)
        {
            links[i] = linksize.get(i).getAttribute("href");
            System.out.println(linksize.get(i).getAttribute("href"));
            System.out.println(linksize.get(i).getText());
            driver.navigate().to(links[i]);
            wait.impWait(30);
        }

执行该代码将返回以下内容:

PASSED
Total no of links Available: 7
List of links Available: 
http://url/dashboard.html#
Property1
http://url/dashboard.html#
Unit1-1
http://url/dashboard.html#
Property2
http://url/dashboard.html#
Unit2-1
http://url/dashboard.html#
Unit2-2
http://url/dashboard.html#
Property3
http://url/dashboard.html#
Unit3-1

将每个侧边栏元素存储到单独的xpath中不是一个选择,因为目标是每次执行时侧边导航列表不同的用户能够使用不同的用户。

1 个答案:

答案 0 :(得分:0)

尝试

选项1

links[i].click();

选项2

driver.get(links[i]);

选项3

links[i].SendKeys(string.Empty);

选项4

((IJavaScriptExecutor)driver).ExecuteScript("arguments[0].focus();", links[i]);

希望这会有所帮助。