首页 > 解决方案 > 无法从公共 X 路径中检索值

问题描述

我需要显示来自共享公共 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<String>();
for(int u=0;u<cmtnames.size();u++) 
{                               
cmtlist.add(cmtnames.get(u).getText());
System.out.println(cmtnames.get(u).getText());
}

代码说明: 由于 Xpath 有多个元素,我使用 List of 来存储它并将这些 Web 元素文本存储在一个数组中。这些 web 元素的大小显示,但在运行期间,它只显示前两个元素值,第三个显示为空白。

注意:当我将窗口的缩放级别从(100 到 90)降低时,上述场景可以正常工作,但是降低这个缩放级别似乎并不是一个战略解决方案,因为 Xpath 可能包含超过 3 个 Web 元素因此,不可能定义满足所有此类场景的准确缩放大小。请建议我一个更好的解决方案。

标签: javaarraysselenium-webdriver

解决方案


尝试:

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
}

推荐阅读