【发布时间】:2023-03-27 18:31:01
【问题描述】:
FirePath 返回 9 个匹配节点,而 List 返回 18 个元素。
操作系统:Win8 Pro,64 位
Java:jdk1.8.0_77
Selenium:3.4.0(selenium-server-standalone)
GeckoDriver:0.17.0
浏览器:Mozilla Firefox 53.0
IDE:Eclipse Neon.2 版本 (4.6.2)
FireBug:2.0.18
网址:https://demos.devexpress.com/aspxeditorsdemos/ListEditors/MultiSelect.aspx
XPATH: //table[@id='ContentHolder_lbFeatures_LBT']/tbody/tr/td
我正在尝试从 多选列表框 中获取项目数。当我在 FireBug/FirePath 中提供 xpath 时,它返回给我“9 个匹配节点”。
继续前进,通过我的脚本,我通过findElements 方法将 WebElements 添加到类型为 WebElement 的 generic List 中。接下来,当我为List<WebElement> 调用size() 方法时,它返回了我18 Elements
更新:
(抱歉,我在试图缩小到确切问题的范围时,以确切的步骤提出问题时犯了一个错误)
这是完整的问题。
所需步骤:
- 访问网址。
- 点击
Selection mode作为Multiple - 从
Phone features表中,我需要选择Blue Tooth、Memory Card Slot和Touch screen。列表可能会有所不同,因此我想将其保存在List<String>中。
这是我的脚本:
package demo;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
public class Q45065876_keyDown {
public static void main(String[] args) {
System.setProperty("webdriver.gecko.driver", "C:\\Utility\\BrowserDrivers\\geckodriver.exe");
WebDriver driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.manage().window().maximize();
driver.navigate().to("https://demos.devexpress.com/aspxeditorsdemos/ListEditors/MultiSelect.aspx");
driver.findElement(By.xpath("//input[@id='ContentHolder_lbSelectionMode_I']")).click();
List<WebElement> selection_list = driver.findElements(By.xpath("//table[@id='ContentHolder_lbSelectionMode_DDD_L_LBT']/tbody/tr/td"));
for (WebElement ele:selection_list)
{
if(ele.getAttribute("innerHTML").contentEquals("Multiple"))
ele.click();
break;
}
driver.findElement(By.id("ContentHolder_lbSelectionMode_DDD_L_LBI1T0")).click();
List<WebElement> phone_feature_list = driver.findElements(By.xpath("//table[@id='ContentHolder_lbFeatures_LBT']/tbody/tr/td"));
System.out.println("Number of Elements : "+phone_feature_list.size());
List<String> item_list = new ArrayList<String>();
item_list.add("Bluetooth");
item_list.add("Memory Card Slot");
item_list.add("Touch screen");
System.out.println("Number of Elements : "+item_list.size());
for (int i=0; i<phone_feature_list.size(); i++)
{
WebElement my_element = phone_feature_list.get(i);
String innerhtml = my_element.getAttribute("innerHTML");
System.out.println("INNER HTML : "+innerhtml);
for (int j=0; j<item_list.size(); j++)
{
item_list.get(j).contentEquals(innerhtml);
my_element.click();
}
}
}
}
你能帮我理解这里发生了什么问题吗?谢谢大家的帮助。
【问题讨论】:
-
对我来说,firepath 只返回 18 个元素。
-
对我来说,chrome 和 firepath 也返回 18
-
哦,即使是 XpathChecker 也会在这里返回 9!!!
-
@Murthi Firefox 和 FireBug 版本?
-
@DebanjanB 你的 firepath 版本是什么?我的 firepath 版本是 0.9.7.1.1,firebug 是 2.0.19
标签: java selenium arraylist selenium-webdriver firebug