gpt4 book ai didi

java - Selenium -Java-FireBug : FirePath returns 9 matching nodes where as List is returning 18 elements

转载 作者:行者123 更新时间:2023-11-30 06:36:54 25 4
gpt4 key购买 nike

FirePath 返回 9 个匹配节点,而 List 返回 18 个元素。

OS: Win8 Pro, 64 bit

Java: jdk1.8.0_77

Selenium: 3.4.0 (selenium-server-standalone)

GeckoDriver: 0.17.0

Browser: Mozilla Firefox 53.0

IDE: Eclipse Neon.2 Release (4.6.2)

FireBug: 2.0.18

URL: https://demos.devexpress.com/aspxeditorsdemos/ListEditors/MultiSelect.aspx

XPATH: //table[@id='ContentHolder_lbFeatures_LBT']/tbody/tr/td

我正在尝试从具有多项选择的列表框获取项目数。当我提供 xpath在 FireBug/FirePath 中,它返回我“9 个匹配节点”

enter image description here

接下来,通过我的脚本,我通过 findElements 将 WebElement 添加到 WebElement 类型的通用 列表中。方法。接下来当我调用size()List<WebElement>的方法,它返回我 18 Elements

更新:

(抱歉,我在尝试缩小确切问题范围时以准确步骤提出问题时犯了一个错误)

这是完整的问题。

所需步骤:

  1. 访问网址。
  2. 点击Selection modeMultiple
  3. 来自 Phone features表,我需要选择Blue Tooth , Memory Card SlotTouch 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();
}
}
}
}

您能帮我了解这里发生了什么问题吗?感谢大家的帮助。

最佳答案

网站刷新需要一两秒钟。 xpath

"//table[@id='ContentHolder_lbFeatures_LBT']/tbody/tr/td"

包括这些复选框,因此您将获得 18 个结果。您可以等待,直到出现不同数量的结果

List<WebElement> phone_feature_list = driver.findElements(By.xpath("//table[@id='ContentHolder_lbFeatures_LBT']/tbody/tr/td[contains(@class, 'dxeT')]"));
int size = phone_feature_list.size();

// choose an option from the dropdown

// wait for the size to change
while ((phone_feature_list = driver.findElements(By.xpath("//table[@id='ContentHolder_lbFeatures_LBT']/tbody/tr/td[contains(@class, 'dxeT')]"))).size() == size);

System.out.println("Number of Elements : " + phone_feature_list.size());

关于java - Selenium -Java-FireBug : FirePath returns 9 matching nodes where as List<WebElement> is returning 18 elements,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45072013/

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