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 类型的泛型 列表中。接下来,当我为size()
调用List<WebElement>
方法时,它会返回 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();
}
}
}
}
你能帮我解释一下这里发生的错误吗?谢谢大家的帮助。
答案 0 :(得分:1)
网站刷新需要一两秒钟。 Handler handler = new Handler();
Runnable runnable = new Runnable() {
@Override
public void run() {
// polling code
handler.postDelayed(this, SIXTY_SECONDS);
}
};Handler.postDelayed(runnable, DELAY_TIME) ;`
xpath
包含这些复选框,因此您获得了18个结果。您可以等到有不同数量的结果
"//table[@id='ContentHolder_lbFeatures_LBT']/tbody/tr/td"