加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – 访问div元素数组中div元素的属性

发布时间:2020-12-17 02:14:38 所属栏目:百科 来源:网络整理
导读:在回答这个问题 Accessing a div element in an array of li elements 当我看到这里 http://wiki.openqa.org/display/WTR/Collections+of+HTML+Elements 我不明白或不明白我需要做什么 我想要做的是用我的公会player_name,player_id和player_lvl制作一个电子
在回答这个问题 Accessing a div element in an array of li elements
当我看到这里 http://wiki.openqa.org/display/WTR/Collections+of+HTML+Elements

我不明白或不明白我需要做什么

我想要做的是用我的公会player_name,player_id和player_lvl制作一个电子表格.

这是包含公会成员的页面. guild page
她是html的一些样本

<div class="guild_board">

<div class="item_box_guild" data-playerid="1256824509">
   <a onclick="doCmd(81,{'player_id':'1256824509'})"><div class="tile_50">
 <div class="avatar_container_50">
 <div class="avatar_image" style="background-image:url(//assets.ageofchampions.com/avatar/09/45/82/56/12/avatar_1351896996145.png);">
 </div>
</div>
 <div class="over">
   <img src="http://profile.ak.fbcdn.net/hprofile-ak-ash4/187582_1256824509_1172546357_q.jpg">
 </div>
<div class="lock"></div>
 </div>
</a>
 <div class="content">
  <div class="stat" style="width:225px;">
    <a onclick="doCmd(81,{'player_id':'1256824509'})">~|SR|~ Kariselle</a> |
        Level 348 <hr>
          Battle Score: 23,951,169

这段代码可以获得第一个成员,我可以做(=> index(2))来获得下一个成员,依此类推.在momunt我们只有10个成员,但它可能会变得更大.如果我不必,我不想为每个成员写这个.

require 'rubygems'
require 'watir-webdriver'
require 'google_drive'
b = Watir::Browser.new
b.goto 'http://game.ageofchampions.com/aoc/?cmd%5B0%5D=112&guild_id=138668'
b.text_field(:id => 'email').set 'email'
b.text_field(:id => 'pass').set 'psswd'
b.button(:name => 'login').click
session = GoogleDrive.login('username','pass')
ws=session.spreadsheet_by_key('spreadsheethe').worksheets[0]
b.goto 'game.ageofchampions.com/aoc/?cmd%5B0%5D=112&guild_id=138668'
#b.divs(:class => 'item_box_guild').each do |div|
playerid_1 = b.div(:class => 'item_box_guild').attribute_value(:'data-playerid')
#playerid_1a = puts attribute_value(:'data-playerid')
#end
playername_1 = b.div(:class => 'item_box_guild').div(:class => 'stat').a.text
#playerlvl_1 = b.div(:class => 'item_box_guild').div(:class => 'stat').text
#layerlvl_1a = playerlvl_1s+id="0"s+value="(.+?)"
# Gets content of A2 cell.
p ws[2,1]  #==> "hoge"

# Changes content of cells.
# Changes are not sent to the server until you call ws.save().
ws[1,1] = "PLAYER ID"
ws[1,2] = "CHAMPIONS NAME"
ws[1,3] = "LEVEL"
ws[2,1] = playerid_1
ws[2,2] = playername_1
ws[2,3] = "still working on lvl"
ws[3,1] = "does this"
ws[3,2] = "still"
ws[3,3] = "work"

ws.save()

# Dumps all cells.
for row in 1..ws.num_rows
for col in 1..ws.num_cols
p ws[row,col]
end
end

# Yet another way to do so.
#p ws.rows  #==> [["fuga",""],["foo","bar]]

# Reloads the worksheet to get changes by other clients.
ws.reload()

解决方法

当你这样做时,你想得到一些球员的集合:

b.divs(:class => 'item_box_guild')

当你迭代每个时:

b.divs(:class => 'item_box_guild').each do |div|

变量div将是集合中的div.在迭代中,你想引用div而不是b.div(:class =>’item_box_guild’)来获得每个玩家.

试着这样做:

b.divs(:class => 'item_box_guild').each do |plaher_div|
  playerid = player_div.attribute_value(:'data-playerid')
  puts playerid
  #=> This will be 'player1' during the first iteration,'player2' during the second,etc.
end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读