gpt4 book ai didi

java - 如何使用 Java 中的 Selenium 从菜单中打开新选项卡中的一一链接

转载 作者:行者123 更新时间:2023-11-30 02:05:37 25 4
gpt4 key购买 nike

我试图在 selenium Java 的新选项卡中打开一个又一个链接,但第一次只有一个链接打开,但打开第二个链接时 For 循环出错,任何人都可以帮我解决这个问题。

这是我的代码。

public class Link_Open_In_New_Tab {

public WebDriver driver;

@BeforeTest
public void OpenBrowser() {

System.setProperty("webdriver.chrome.driver", "./driver/chromedriver.exe");
driver = new ChromeDriver();
driver.manage().window().maximize();
driver.get("https://www.nopcommerce.com/");
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
}

@Test
public void OpenLink() throws InterruptedException {

List<WebElement> ProMenu;
WebElement SubLinks;
driver.findElement(By.xpath("//ul[@class='top-menu']/li[1]/a")).click();
ProMenu = driver.findElements(By.xpath("//ul[@class='top-menu']/li[1]/ul[@class='sublist']/li/a"));

for (int i = 0; i < ProMenu.size(); i++) {

SubLinks = driver
.findElement(By.xpath("//ul[@class='top-menu']/li[" + (i + 1) + "]/ul[@class='sublist']/li/a"));
Actions act = new Actions(driver);
act.keyDown(Keys.CONTROL).click(SubLinks).keyUp(Keys.CONTROL).build().perform();
Thread.sleep(2000);

String winHandleBefore = driver.getWindowHandle();

for (String winHandle : driver.getWindowHandles()) {
driver.switchTo().window(winHandle);
}

Thread.sleep(2000);

driver.close();
Thread.sleep(2000);

driver.switchTo().window(winHandleBefore);
Thread.sleep(2000);

//driver.findElement(By.xpath("//ul[@class='top-menu']/li[1]/a")).click();
//Thread.sleep(2000);
}
}

}

最佳答案

您试图打开产品菜单中的所有子链接。但是您的子链接 xpath 指向所有菜单的第一个子链接 (li["+ (i + 1) + "]/ul[@class='sublist']/li/a)。因此,您需要如下修改您的子链接 xpath,然后尝试

SubLinks = driver.findElement(By.xpath("//ul[@class='top-menu']/li[1]/ul[@class='sublist']/li[" + (i + 1) + "]/a"));

关于java - 如何使用 Java 中的 Selenium 从菜单中打开新选项卡中的一一链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51472092/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com