Java Webelement解析

Java Webelement解析,java,selenium,Java,Selenium,所以我从中提取信息,它运行得非常慢程序要求列表=行.findElements(按.className(“课程选择标题”)我假设我需要一个对象并从行中提取信息Tr->课程选择->课程编号。 WebElement tableelement = wait.until(ExpectedConditions.visibilityOfElementLocated(By.tagName("table"))); List<WebElement> trs = tableele

所以我从中提取信息,它运行得非常慢<代码>程序要求列表=行.findElements(按.className(“课程选择标题”)我假设我需要一个对象并从行中提取信息Tr->课程选择->课程编号。

    WebElement tableelement = 
    wait.until(ExpectedConditions.visibilityOfElementLocated(By.tagName("table")));
    List<WebElement> trs = tableelement.findElements(By.tagName("tr"));
    for (WebElement row : trs) 
    {
        List<WebElement> listofprogramrequirements = row.findElements(By.className("course-selection- 
        title"));
        for (WebElement col : listofprogramrequirements) 
        {
            System.out.println(col.getText());
            List<WebElement> coursenumbers = row.findElements(By.className("course-number")); 
            if(coursenumbers.size()>0)
            {
                Iterator<WebElement> iter = coursenumbers.iterator();
                // This will check whether list has some element or not
                while (iter.hasNext()) {
                    WebElement item = iter.next();
                    String label = item.getText();
                    System.out.println(label);
                }
            }
            else
            {
            }
        }
    }

  **Produces:**
  All of
  CPSC 1050
  CPSC 1150
  CPSC 1160
  CPSC 1181
  CPSC 2150
  MATH 2362
  Two of
  One of
  MATH 1171
WebElement tableelement=
wait.until(ExpectedConditions.visibilityOfElementLocated(By.tagName(“table”));
列表trs=tableelement.findElements(按.tagName(“tr”));
对于(WebElement行:trs)
{
ListListOfProgramRequirements=row.findElements(按.className)(“课程选择-
业权);;
for(WebElement列:程序要求列表)
{
System.out.println(col.getText());
List coursenumbers=row.findElements(按.className(“课程编号”));
如果(coursenumbers.size()>0)
{
迭代器iter=coursenumbers.Iterator();
//这将检查列表是否包含某些元素
while(iter.hasNext()){
WebElement item=iter.next();
字符串标签=item.getText();
系统输出打印项次(标签);
}
}
其他的
{
}
}
}
**产生:**
全部
消费品安全委员会1050
消费品安全委员会1150
消费品安全委员会1160
消费品安全委员会1181
消费品安全委员会2150
数学2362
两个
什么之中的一个
数学1171

您可以通过直接定位
课程选择标题来简单地输入代码,并使用它来定位该标题下的课程

List<WebElement> listofprogramrequirements = driver.findElements(By.className("course-selection-title"));
for (WebElement col: listofprogramrequirements) {
    System.out.println(col.getText());
    List<WebElement> coursenumbers = col.findElements(By.xpath(".//..//td[@class='course-number']"));
}
List listofprogramrequirements=driver.findElements(按.className(“课程选择标题”));
for(WebElement列:程序要求列表){
System.out.println(col.getText());
List coursenumbers=col.findElements(By.xpath(“../..//td[@class='course-number']);
}

你能详细说明一下你的问题吗?我的代码运行速度非常慢。有没有办法重写它以提高速度。我需要抓取课程选择,课程编号,写出上面的内容。在第一次循环后,速度变慢。网站上有一个表格,我需要从中获取所有tr/td colspan=“2”,从那里我获取课程选择类名,然后在打印信息时获取所有课程编号。