首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在selenium webdriver中从HTML中获取标记名

如何在selenium webdriver中从HTML中获取标记名
EN

Stack Overflow用户
提问于 2013-05-29 11:09:34
回答 4查看 30.7K关注 0票数 3

我想要在http://www.redbus.in/Booking/SelectBus.aspx?fromCityId=124&fromCityName=Hyderabad&toCityId=462&toCityName=Mumbai&doj=30-May-2013&busType=Any&opId=0中获得所有旅行的名称,出现在标记中(它们是动态的,所以想要在数组中进行计数)

以下是html文件的某些部分

代码语言:javascript
复制
<div id="t1-results">
<table id="t1-list5" class="list5" cellspacing="0" cellpadding="0" style="margin-top:0px;">
 <tbody id="t1-0">
 <tr class="r1">
 <td class="i1">Akbar Travels</td>
 <td class="i2">
 <td class="i3">
 <td class="i4">
 <td class="i5">
 <td class="i6">
 <td class="i7">
  </tr>
 <tr class="r2">
 <tr class="r3">
 </tbody>
 <tbody class="hrblank">
 <tbody id="t1-1" class="G">
 <tr class="r1">
 <td class="i1">Omer Travels</td>
 <td class="i2">
 <td class="i3">
 <td class="i4">
 <td class="i5">
 <td class="i6">
 <td class="i7">
 </tr>
 <tr class="r2">
 <tr class="r3">
 </tbody>
 <tbody class="hrblank">
 <tbody id="t1-2">
 <tr class="r1">
 <td class="i1">Sangita Travel Agency</td>
 <td class="i2">
 <td class="i3">
 <td class="i4">
 <td class="i5">
 <td class="i6">
 <td class="i7">
 </tr>

我已经尝试过

代码语言:javascript
复制
        List<WebElement> linkElements = driver.findElements(By.tagName("//table[@cellspacing=\"0\"]"));

        String[] linkTexts = new String[linkElements.size()];

当我将got作为linkElements ArrayList<E> (id=82)进行调试时

代码语言:javascript
复制
                   `linkTexts         String[0]  (id=95)`

不起作用。

我也试过了

代码语言:javascript
复制
List<WebElement> linkElements = driver.findElements(By.tagName("t1-results"));

        String[] linkTexts = new String[linkElements.size()];

有没有人能建议我怎么取名字。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-05-29 11:22:16

尝试使用CSS选择器,如下所示:

代码语言:javascript
复制
List<WebElement> linkElements = driver.findElements(By.cssSelector("table tr.r1 > td.i1")); 

我刚刚做了一个快速测试,这段代码找到了所有63个匹配项(在撰写本文时):

代码语言:javascript
复制
driver.get("http://www.redbus.in/Booking/SelectBus.aspx?fromCityId=124&fromCityName=Hyderabad&toCityId=462&toCityName=Mumbai&doj=30-May-2013&busType=Any&opId=0");

//Find's the elements using a CSS selector: all td's (with class "i1"), directly inside a tr (with class r1) which are inside a table.
List<WebElement> linkElements = driver.findElements(By.cssSelector("table tr.r1 > td.i1"));
String[] linksText = new String[linkElements.size()];
int index = 0;
for(WebElement element : linkElements){
    linksText[index++] = element.getText();
}
票数 2
EN

Stack Overflow用户

发布于 2013-05-29 12:57:48

Xpath也是一个很好的选择,希望能对你有所帮助。

代码语言:javascript
复制
List<WebElement> linkElements = driver.findElements(By.Xpath("Your Xpath"));
String[] linksText = new String[linkElements.size()];
int index = 0;
for(WebElement element : linkElements){  
linksText[index++] = element.getText();
}
票数 0
EN

Stack Overflow用户

发布于 2014-04-08 16:02:36

尝试使用下面给出的CSS计数概念

代码语言:javascript
复制
int size=driver.findElements(By.cssSelector("#t1-results > #t1-list5 > tbody > tr.r1")).size();
for(int i=1;i<=size();i++)
{
    String travelname = driver.findElement(By.cssSelector("#t1-results > #t1-list5 > tbody > tr.r1 > td.i1"))
}

让我知道上面的脚本是否适合你。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16804839

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档