我正致力于自动化网页编辑任务。网页在框架内有一个动态表格。每行有五列。通过动态表我的意思是行在网页上动态加载。在任何给定点,加载的行数不超过22.我可以通过移动滚动条来访问更多行。表中的总行数约为450,我需要读取所有行以修改第2列中的某些值。 我目前正在使用Selenium WebDriver尝试将行读入List,但在任何给定时间只能接收22行。这是我尝试过的:
IWebElement tableElement = Driver.driverInstance.FindElement(By.XPath(*tableXPath*));
var rowList = tableElement.FindElements(By.TagName("tr"));
Console.WriteLine("Table rows: " + rowList.Count());
有什么方法可以将整个表(450行)读入数据结构,所以我可以对它们进行内存处理吗?
这是HTML部分的外观,通过FireBug:
<table id="ctl00_MPH_HyperGrid1ContentTable" class="HyperGrid" style="table-layout: fixed; width: 100%;">
<colgroup>
<tbody>
<tr id="ctl00_MPH_HyperGrid1_10" class="" style="height: 37px;">
<tr id="ctl00_MPH_HyperGrid1_11" class="alt" style="height: 37px;">
<tr id="ctl00_MPH_HyperGrid1_12" class="" style="height: 37px;">
<td class="checkable">
<td class="">AntelopeEB</td>
<td class="">CA - Antelope EB</td>
<td class="">SmarterMail</td>
<td class="">User</td>
<td class="">
<td class="loadingCell" colspan="5" style="display:none;">Loading...</td>
</tr>
<tr id="ctl00_MPH_HyperGrid1_13" class="alt" style="height: 37px;">
<tr id="ctl00_MPH_HyperGrid1_14" class="" style="height: 37px;">
答案 0 :(得分:0)
“在任何给定时间点,加载的行数不超过22”
这意味着selenium只能访问22行并存储到LIST数据结构中,因为浏览器只有22行。
您需要通过SELENIUM触发事件以使剩余数据出现在浏览器中,以便selenium可以检索接下来的22个标签。
您已经提到可以通过滚动访问更多行,包括可以触发滚动事件的函数。利用Thread.sleep(millisecs);如果页面内容加载缓慢。如果您需要更多信息,请告诉我,请分享代码