0

我想单击表格中的多个项目。为此,我使用按 n 按住 Ctrl 键,然后使用 xpath 单击多个链接。现在单击多个 xpath,我使用 while 循环来确定要单击的链接数量。但我无法在 Java 中的 Action Perform 中做到这一点。这是显示错误的代码

new Actions(driver).keyDown(Keys.CONTROL).  //syntax error on token".", ; expected.
while(items > 0)
{
click(driver.findElement(By.xpath("//div/div/div/div[`$items`]/div/div"))). //click(Webelement is undefined
}
keyUp(Keys.CONTROL). //keyUP is undefined
perform();

我已经评论了我在相应行中遇到的错误。如果删除了 while 循环,它可以正常工作。只有在添加了 while 循环时才会出现问题。请帮忙

4

1 回答 1

1

我的建议是,在执行此操作之前,您可能需要一些 Java 编程教程。这不会花费很长时间,但您可能会避免几个小时只是试图找出一些语法错误。

我相信您将此代码复制到其他地方

new Actions(driver).keyDown(Keys.CONTROL).click().keyUp(Keys.CONTROL).perform();

您的逻辑大部分是正确的,但是您是否知道 Java 语句以;而不是结尾.,这是错误消息“令牌上的语法错误”。“,;预期。” 方法。

如果注释掉 while 循环,代码和上一行是一样的,因为它是一个完整的语句,以 . 结尾;。所以不会有任何语法错误。

new Actions(driver).keyDown(Keys.CONTROL).
// whatever in the while loop
keyUp(Keys.CONTROL).
perform();

当您添加 while 循环时,您想要的是一个语句来按下 Keys.CONTROL,然后是一个 while 循环来单击,然后是一个语句来释放控制。您不能只将 while 循环放入一个语句中。

new Actions(driver).keyDown(Keys.CONTROL).perform(); // end with semicolon
while(items > 0)
{
// wrong while loop logic, items will never change in the loop and what's $items?
// do you want a for loop with index? I don't think this locator is valid.
// however, the syntax error should be fixed.
new Actions(driver).click(By.xpath("//div/div/div/div[`$items`]/div/div")).perform(); // end with semicolon
}
new Actions(driver).keyUp(Keys.CONTROL).perform();  // end with semicolon

一旦你摆脱了错误,我们就可以继续看看它是否真的有效。

于 2013-05-25T21:50:54.243 回答