the source html of the page i am trying to scrape
Iam试图使用Selenium Webdriver抓取使用某些javascripts呈现的webtable
driver.get("http://xxxxx:xxxxxxxx@xxxxxx-
xxxxxx.grid.xxxxxx.com/Windchill/app/#ptc1/comp/queue.table");
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
List<WebElement> k=driver.findElements(By.xpath("//*[@id='queue.table']"));
System.out.println(k.size());
System.out.println(k.get(0).getText());
k.size()返回1 当我运行get text时,它只返回表中的一些条目
Actual table and entries the total rows are 135
跑步后我得到如下
Queue Management
Loading...
Name
Type
Status
Enabled
Group
Total Entries
Waiting Entries
Severe/Failed Entries
DeleteCompletedWorkItemsQueu e
Process
Started
Enabled
Default
0
0
0
DeliveryStatusOnStartup
Process
Started
Enabled
Default
0
0
0
DTODeliverablesQueue
Process
Started
Enabled
Default
0
0
0
DTOOffPeakQueue
Process
Started
Enabled
Default
0
0
0
Loading.........
我得到25个表的条目,其余的不存在 我无法理解为什么我得到了#34;正在加载......&#34;
答案 0 :(得分:0)
我认为通过使用List<WebElement> k=driver.findElements(By.xpath("//*[@id='queue.table']"));
我们试图在列表中列出包含太多不需要的项目的列表。相反,我觉得抓住<td>
标签中包含缩进值并保存到列表中的节点会很有效。接下来,我们可以遍历列表并使用getText()
方法或getAttribute()
方法检索文本,如下所示:
driver.get("http://xxxxx:xxxxxxxx@xxxxxx-xxxxxx.grid.xxxxxx.com/Windchill/app/#ptc1/comp/queue.table");
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
List<WebElement> k = driver.findElements(By.xpath("//*[@id='queue.table']//tr"));
System.out.println(k.size());
for (WebElement my_element:k)
{
String innerhtml = my_element.getAttribute("innerHTML");
System.out.println("Value from Table is : "+innerhtml);
}