使用Selenium WebDriver从动态表中获取所有行

时间:2015-04-20 02:43:26

标签: testing selenium selenium-webdriver automation dynamic-tables

我正致力于自动化网页编辑任务。网页在框架内有一个动态表格。每行有五列。通过动态表我的意思是行在网页上动态加载。在任何给定点,加载的行数不超过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;">

1 个答案:

答案 0 :(得分:0)

“在任何给定时间点,加载的行数不超过22”

这意味着selenium只能访问22行并存储到LIST数据结构中,因为浏览器只有22行。

您需要通过SELENIUM触发事件以使剩余数据出现在浏览器中,以便selenium可以检索接下来的22个标签。

您已经提到可以通过滚动访问更多行,包括可以触发滚动事件的函数。利用Thread.sleep(millisecs);如果页面内容加载缓慢。如果您需要更多信息,请告诉我,请分享代码