Java 无法从公共X路径检索值
我需要显示来自共享一个公共Xpath的多个web元素的文本 下面是我使用的代码:Java 无法从公共X路径检索值,java,arrays,selenium-webdriver,Java,Arrays,Selenium Webdriver,我需要显示来自共享一个公共Xpath的多个web元素的文本 下面是我使用的代码: List<WebElement> cmtnames =driver.findElements(By.xpath("//*[@id='issue_actions_container']/div/div/div/div[2]/a")); System.out.println(cmtnames.size()); List<String> cmtlist = new ArrayList<S
List<WebElement> cmtnames =driver.findElements(By.xpath("//*[@id='issue_actions_container']/div/div/div/div[2]/a"));
System.out.println(cmtnames.size());
List<String> cmtlist = new ArrayList<String>();
for(int u=0;u<cmtnames.size();u++)
{
cmtlist.add(cmtnames.get(u).getText());
System.out.println(cmtnames.get(u).getText());
}
List cmtnames=driver.findElements(By.xpath(“//*[@id='issue\u actions\u container']/div/div/div/div[2]/a”);
System.out.println(cmtnames.size());
List cmtlist=new ArrayList();
对于(int u=0;u尝试:
Actions action=新操作(webdriver);
WebElement=driver.findElement(By.xpath(“/*[@id='issue\u actions\u container']]/div/div/div/div/div[2]/a”);
action.moveToElement(element.build().perform();//移动到元素
列出cmtnames=driver.findElements(By.xpath(“/*[@id='issue\u actions\u container']]/div/div/div/div[2]/a”);
for(WebElement e:cmtnames){
System.out.println(e.getText());//打印所有元素
}
这与问题中的循环有何不同?它仍然不能用您提供的代码生成整个值。@盖伊拉杰夫兰詹,我的答案是“列表”的正确实现,因为它获取所有Web元素并存储在数据结构中,因此无需再次将它们存储在数组中。@Rathish_Logan,如果您的代码是wo在缩小时,这些元素可能在正常屏幕大小上不可见。由于Selenium Webdriver试图模拟真实用户,因此它无法与不可见/隐藏的元素交互。首先,您可以尝试使用操作移动到元素。我已在回答中添加了代码。请让我知道这是否有效。@theGuy,您是correct,未显示的值从窗口中隐藏,现在如何向下滚动并获取其余不可见的WebElements值?@Rathish_Logan,我的代码的前3行将移动到该元素(您也可以在父元素上使用它)然后使用“列表”获取所有元素。是否可以检查[@id='issue\u actions\u container']/div/div/div/div[2]/a
的浏览器调试器(F12)中是否存在所有3个元素?
Actions action = new Actions(webdriver);
WebElement element = driver.findElement(By.xpath("//*[@id='issue_actions_container']/div/div/div/div[2]/a"));
action.moveToElement(element).build().perform(); // to move to the element
List<WebElement> cmtnames =driver.findElements(By.xpath("//*[@id='issue_actions_container']/div/div/div/div[2]/a"));
for(WebElement e : cmtnames ){
System.out.println(e.getText()); // to print all the elements
}