gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 07:36:32 26 4
gpt4 key购买 nike

在这个问题的回答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)) 获取下一个成员,依此类推。目前我们只有 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_1\s+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

关于ruby - 访问 div 元素数组中的 div 元素的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13220248/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com