Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.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
如何查找td元素是否存在-使用java的selenium webdriver_Java_Selenium - Fatal编程技术网

如何查找td元素是否存在-使用java的selenium webdriver

如何查找td元素是否存在-使用java的selenium webdriver,java,selenium,Java,Selenium,Html代码 <table class="adminlist" width="100%" cellspacing="0" cellpadding="0" border="0"> <tbody> <tr data-bind="if: RowCounts>0, attr: {StatusId: Id, DescName:Name}" statusid="2" descname="Abandoned"></tr> <tr data-bind=

Html代码

<table class="adminlist" width="100%" cellspacing="0" cellpadding="0" border="0">
<tbody>
<tr data-bind="if: RowCounts>0, attr: {StatusId: Id, DescName:Name}" statusid="2" descname="Abandoned"></tr>
<tr data-bind="if: RowCounts>0, attr: {StatusId: Id, DescName:Name}" statusid="1" descname="Active">
<td style="width: 5%;">
<input type="checkbox" data-bind="attr: { accesskey: Id }" accesskey="1">
</td>
<td class="country">
<span data-bind="text:Name">Active</span>
 (
<span data-bind="text:RowCounts">20</span>
)
</td>
</tr>

活跃的
(
20
)
我们如何在上表中找到“td”元素,基于上面的第一行没有td元素,但第二行有td元素

java代码

Hashtable<String, Integer> renewalStatus = new Hashtable<String, Integer>();
        List<WebElement> activeAssetStatus = driver.findElements(By
                .xpath("//*[@id='divPatPortfolioStatusCount']/table/tbody/tr"));

        for (int i = 1; i <= activeAssetStatus.size(); i++) {
            List<WebElement> statusValue = activeAssetStatus.get(i)
                    .findElements(By.tagName("td"));

            if (statusValue.size() > 0) {
                WebElement al = driver
                        .findElement(By
                                .xpath("//*[@id='divPatPortfolioStatusCount']/table/tbody/tr["
                                        + i + "]/td[2]"));

                String mainText = al.getText();
                final Pattern p = Pattern.compile("(.*?)\\s*\\((.*?)\\)");
                final Matcher m = p.matcher(mainText);
                m.find();
                String name = m.group(1);
                String count = m.group(2);
                renewalStatus.put(name, Integer.parseInt(count));
            }
        }
}
Hashtable renewalStatus=new Hashtable();
List activeAssetStatus=driver.findElements(按
.xpath(“/*[@id='divPatPortfolioStatusCount']/table/tbody/tr”);
对于(int i=1;i 0){
WebElement al=驱动程序
.findElement(由
.xpath(“//*[@id='divPatPortfolioStatusCount']/table/tbody/tr[”
+i+“]/td[2]”);
字符串mainText=al.getText();
final Pattern p=Pattern.compile((.*?\\s*\\(.*?\\);
最终匹配器m=p.Matcher(主文本);
m、 查找();
字符串名称=m.group(1);
字符串计数=m.group(2);
renewalStatus.put(name,Integer.parseInt(count));
}
}
}
对于上述代码,无法在哈希表中收集和存储td值 它产生了“非接触元素例外” 因为在if条件i值1中,它会产生此异常,所以如何收集具有td值的对应行

List alltreelements=driver.findElements(By.xpath(“//table[@class='adminlist']/tbody/tr”);
List <WebElement> allTrElements = driver.findElements(By.xpath("//table[@class='adminlist']/tbody/tr"));

for(int i= 0;i<allTrElements.size();i++){
   List<WebElement> allTdElements = allTrElements.get(i).findElements(By.tagName("td"));
   if(allTdElements.size() > 0 ){
      // if confirms <tr> contains <td>
   }
}
对于(int i=0;i 0){ //如果确认包含 } }
WebDriver mainDriver=new ChromeDriver();
//获取表元素
WebElement eleTable=mainDriver.findElement(按.tagName(“表”);
//获取表的行元素列表
ListtableRowList=eleTable.findElements(按.tagName(“tr”));
对于(int i=0;i0){
//如果大小>0,则其中有td元素。
}
}

@shekhar请在i值变为1的循环中找到我的java代码,你能告诉我你想从td元素中获取什么吗?:在该td中的span值(活动,20),刮取该表中的所有行查找并收集所有td值,然后检查是否(statusValue.size()>0),而不是使用xpath确定第二个td元素。请尝试迭代获得的td列表,即statusValue。因此,在该statusValue中,get(1)将为您提供第二个td元素。感谢您的帮助,请查找for循环,因为它工作正常,但完成for(int i=1;i 0)的循环需要更多时间{WebElement al=driver.findElement(By.xpath(“/*[@id='divPatPortfolioStatusCount']]/table/tbody/tr[“+i+”]/td[2]”);}
WebDriver mainDriver = new ChromeDriver();

//get the table element
WebElement eleTable = mainDriver.findElement(By.tagName("table");

//get the list of row elements of table
List<WebElement>tableRowList = eleTable.findElements(By.tagName("tr"));

for(int i = 0 ; i < tableRowList.size(); i++) {
    //take individual rows
    WebElement rowElement = tableRowList.get(i);

    //get the list of td elements
    List<WebElement> dataElement = rowElement.findElements(By.tagName("td"));

    if(dataElement.size() > 0) {
        //if size > 0, there are td elements in it.
    }
}