嵌套循环从webelement中提取

时间:2015-06-30 14:36:58

标签: java loops selenium nested

嵌套循环下面似乎有问题。我无法弄清楚出了什么问题。你能看看并提出建议吗?

for (int i = 0; i < headers.size(); i++) {
    for (int j = 0; j < headerlists.size(); j++) {
        System.out.println(hotelid + "|" + headers.get(i).getText() + "|" + headerlists.get(j).getText());
    }
}

输出不符合预期。下面是它打印的输出 -

713374|Basic amenities|WiFi
Air Conditioner
24h Check in
Restaurant
Bar
Cafe
Room Service
Internet
Business Center
Pool
Gym
713374|Basic amenities|Air Conditioning
Doorman
Express Check-In
Express Check-Out
Housekeeping
Banquet Facility
Doctor on Call
713374|Basic amenities|Air Conditioning
Doorman
Express Check-In
Express Check-Out
Housekeeping
Banquet Facility
Doctor on Call

已编辑 - 我期待的是:

713374|Basic amenities|WiFi 713374|Basic amenities|Air Conditioner 713374|Basic amenities|24h Check in 713374|Basic amenities|Restaurant 713374|Basic amenities|Bar 713374|Basic amenities|Cafe 713374|Basic amenities|Room Service 713374|Basic amenities|Internet 713374|Basic amenities|Business Center 713374|Basic amenities|Pool 713374|Basic amenities|Gym

2 个答案:

答案 0 :(得分:1)

根据评论中的预期输出,headerLists的数据包含意外的换行符!selenium代码看起来很好。根据你的评论,你基本上说headerLists输出的信息太多了。

同样,由于意外的新行,我们希望处理headerLists的每个节点中每个换行符的每一位数据,因此我们可以将每个换行符拆分为一个数组,以便我们更好地使用它。

将headerList.get(j).getText()视为多行文本,使用以下循环分隔换行符,并为每个设施利用每个 NewlineData

/page?success

<强>之前

  

“空调   
电视   
浴室   
ETC“

<强>后

  

“71000空调| 71000电视| 71000浴室| 71000等”

您可以使用split来分隔char分隔的字符串。将带有换行符的headerLists转换为字符串数组。并重新打印字符串数组中的每个节点以及酒店ID。

上面的forloop with split方法是您的关键,显然重新排列您的输出以匹配预期,您可能不想打印71000 TV | 71000浴室等

答案 1 :(得分:0)

似乎headerlists.get(j).getText()包含new line

您可以使用 - &gt;

删除它们
replaceAll("\n"," ")); //repalces all new lines with a empty space

以下是您的代码的样子:

for (int i = 0; i < headers.size(); i++) {
    for (int j = 0; j < headerlists.size(); j++) {
        System.out.println(hotelid + "|" + headers.get(i).getText() + "|" + headerlists.get(j).getText().replaceAll("\n"," ");
    }
}