Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用selenium C访问HTML表#_C#_Selenium_Html Table_Selenium Chromedriver_Indexoutofrangeexception - Fatal编程技术网

C# 如何使用selenium C访问HTML表#

C# 如何使用selenium C访问HTML表#,c#,selenium,html-table,selenium-chromedriver,indexoutofrangeexception,C#,Selenium,Html Table,Selenium Chromedriver,Indexoutofrangeexception,我正在尝试使用selenium c#web驱动程序访问html 我的html的一部分如下() 那我也有个问题。我需要访问这些表。这就是,在这个表中,我需要得到每个表的最大数,如果这个数>90,则有逻辑。为了实现这一点,我使用了以下代码 for (int i = 0; i < rows.Count; i++) { if (i != 0)//Skip header { var row = rows[i]; var rowTds = row.Fin

我正在尝试使用selenium c#web驱动程序访问html

我的html的一部分如下()

那我也有个问题。我需要访问这些表。这就是,在这个表中,我需要得到每个表的最大数,如果这个数>90,则有逻辑。为了实现这一点,我使用了以下代码

for (int i = 0; i < rows.Count; i++)
{
    if (i != 0)//Skip header
    {
        var row = rows[i];
        var rowTds = row.FindElements(By.TagName("td"));

        if ((rowTds[3].Text.Trim().Equals("LOAN") || rowTds[3].Text.Trim().Equals("LEAS") || rowTds[3].Text.Trim().Equals("CRCD") || rowTds[3].Text.Trim().Equals("OVDR")) && rowTds[4].Text.Trim().Equals("ACTV") && rowTds[5].Text.Trim().Equals("OWN"))
        {
            for (int subTab = 0; subTab < subTables.Count; subTab++)
            {
                if (subTab > 1)
                {
                    var colsDaysArrers = subTables[subTab].FindElements(By.TagName("td"));
                    if (colsDaysArrers.Count > 0)
                    {
                        if (colsDaysArrers[0].Text.Equals(crib.NO.ToString()))
                        {
                            for (int j = 1; j <= colsDaysArrers.Count - 1; j++)
                            {

                                var text = colsDaysArrers[j].Text;
                                if (!(text.Equals("--") || text.Equals("OK") || text.Equals("")))
                                {
                                    var val = double.Parse(text);
                                    if (val > 90)
                                    {
                                        crib.FACILITYARREARSSTATUS = "Irrigular";
                                        break;
                                    }
                                    else
                                    {
                                        crib.FACILITYARREARSSTATUS = "Regular";
                                    }

                                }
                            }

                            break;

                        }
                    }
                }
            }

        }

    }
}
for(int i=0;i1)
{
var colsDaysArrers=子表[subTab].FindElements(按.TagName(“td”));
如果(COLSDAYSARERS.Count>0)
{
if(colsDaysArrers[0].Text.Equals(crib.NO.ToString()))
{
对于(int j=1;j 90)
{
crib.facilityarreasstatus=“灌溉”;
打破
}
其他的
{
crib.facilityarreasstatus=“常规”;
}
}
}
打破
}
}
}
}
}
}
}
请告诉我这个代码可以这样做吗?或者有其他的方法吗

第一张“信贷安排(CF)明细”表:

第二张“信贷安排(CF)明细”表:

“已结算信用贷款明细(过去5年)”表:

“潜在负债和流动负债汇总(不包括结算)”表:

获取除第一个“信贷安排(CF)详细信息”表标题以外的所有行:

您可以使用下面的Xpath- (//*[@id='bandstyle-Ver2'])[2]///tr

这里的数字2是表号,根据您的要求,您可以有1、3、4

(//*[@id='bandstyle-Ver2'])[2]///tr[1]/td[1]

上面的xpath将为您提供第二个表第一行的td

现在,您可以编写一个逻辑使其通用


注释如果您需要更多解释

我应该在哪里应用此功能请检查我的完整html文件。希望对您有所帮助对我有所帮助先生,我使用的是
IWebElement
如果
WebElement
您能告诉我I是什么吗?没有
get
方法。我犯了几个错误,现在检查一下。非常感谢您的帮助,先生,请检查我更新的问题。我用上面的代码来改变你的答案。正如我在更新的问题部分提到的,我还需要从下一个表中得到一个最大的否定。先生,这样行吗?或者,请给我一个答案,如果你能检查我的完整HTML,请给我一个完整的答案,先生,因为我真的很喜欢这个:(
var table = driver.FindElement(By.Id("reportcontainerstyle-Ver2"));
var rows = table.FindElements(By.TagName("tr"));

//To get days arrears details
var mainTable = driver.FindElement(By.Name("ConsumerCreditDetails_Version3"));
var subTables = mainTable.FindElements(By.Id("bandstyle-Ver2"));

for (int i = 0; i < rows.Count; i++)
{
    if (i != 0)//Skip header
    {
        var row = rows[i];
        var rowTds = row.FindElements(By.TagName("td"));

        if ((rowTds[3].Text.Trim().Equals("LOAN") || rowTds[3].Text.Trim().Equals("LEAS") || rowTds[3].Text.Trim().Equals("CRCD") || rowTds[3].Text.Trim().Equals("OVDR")) && rowTds[4].Text.Trim().Equals("ACTV") && rowTds[5].Text.Trim().Equals("OWN"))
        //if(true)
        {

        }

    }
} 
    var rows = driver.FindElements(By.XPath("//table[.//td[normalize-space(.)='Credit Facility (CF) Details']][1]/following-sibling::table[1]//tr[not(@type='table-header')]"));

    foreach (IWebElement row in rows)
    {
        var cfType = row.FindElement(By.XPath("td[4]")).Text.Trim();
        var cfStat = row.FindElement(By.XPath("td[5]")).Text.Trim();

        if ((cfType.Equals("LOAN") || cfType.Equals("LEAS") || cfType.Equals("CRCD") || cfType.Equals("OVDR")) && cfStat.Equals("ACTV") && cfStat.Equals("OWN"))
        {

        }
    }
for (int i = 0; i < rows.Count; i++)
{
    if (i != 0)//Skip header
    {
        var row = rows[i];
        var rowTds = row.FindElements(By.TagName("td"));

        if ((rowTds[3].Text.Trim().Equals("LOAN") || rowTds[3].Text.Trim().Equals("LEAS") || rowTds[3].Text.Trim().Equals("CRCD") || rowTds[3].Text.Trim().Equals("OVDR")) && rowTds[4].Text.Trim().Equals("ACTV") && rowTds[5].Text.Trim().Equals("OWN"))
        {
            for (int subTab = 0; subTab < subTables.Count; subTab++)
            {
                if (subTab > 1)
                {
                    var colsDaysArrers = subTables[subTab].FindElements(By.TagName("td"));
                    if (colsDaysArrers.Count > 0)
                    {
                        if (colsDaysArrers[0].Text.Equals(crib.NO.ToString()))
                        {
                            for (int j = 1; j <= colsDaysArrers.Count - 1; j++)
                            {

                                var text = colsDaysArrers[j].Text;
                                if (!(text.Equals("--") || text.Equals("OK") || text.Equals("")))
                                {
                                    var val = double.Parse(text);
                                    if (val > 90)
                                    {
                                        crib.FACILITYARREARSSTATUS = "Irrigular";
                                        break;
                                    }
                                    else
                                    {
                                        crib.FACILITYARREARSSTATUS = "Regular";
                                    }

                                }
                            }

                            break;

                        }
                    }
                }
            }

        }

    }
}
driver.FindElement(By.Xpath("//table[.//td[normalize-space(.)='Credit Facility (CF) Details']][1]/following-sibling::table[1]"));
driver.FindElement(By.Xpath("//table[.//td[normalize-space(.)='Credit Facility (CF) Details']][2]/following-sibling::table[1]"));
driver.FindElement(By.Xpath("//td[normalize-space(.)='Details of Settled Credit Facilities (Last 5 Years)' and @class='tblHeader']/ancestor::table[1]"));
driver.FindElement(By.Xpath("//td[normalize-space(.)='Summary of Potential and Current Liabilities (Excluding Settlements)' and @class='tblHeader']/ancestor::table[2]//table[2]"));
var rows = driver.FindElements(By.Xpath("//table[.//td[normalize-space(.)='Credit Facility (CF) Details']][1]/following-sibling::table[1]//tr[not(@type='table-header')]"));

foreach (IWebElement row in rows)
{
    var cfType = row.FindElement(By.Xpath(".//td[4]")).Text.Trim();
    var cfStat = row.FindElement(By.Xpath(".//td[5]")).Text.Trim();

    if ((cfType.Equals("LOAN") || cfType.Equals("LEAS") || cfType.Equals("CRCD") || cfType.Equals("OVDR")) && cfStat.Equals("ACTV") && cfStat.Equals("OWN"))
    {
        foreach (IWebElement colsDaysArrers in driver.FindElements(By.Xpath("//tr[./td[@class='textbrownNew' and @counter='true']]/td[not(@counter='true')]")))
        {
            var text = colsDaysArrers.Text;
            if (!(text.Equals("--") || text.Equals("OK") || text.Equals("")))
            {
                if (double.Parse(text) > 90)
                {
                    crib.FACILITYARREARSSTATUS = "Irrigular";
                    break;
                }
                else
                {
                    crib.FACILITYARREARSSTATUS = "Regular";
                }
            }
        }
    }
}