私が投稿した他の方法よりも難しいと思われるウェブページ内の表データにアクセスしたいと考えています。私は、ページをHTMLファイルとして保存すると、テーブルとそのデータが含まれていないため、一部のHTMLがWatirに表示されることが懸念されます。Googleグループ内の表のセル値にアクセスするにはWatirを使用するメンバーのページ
状況: Googleグループには(グループ管理者として設定を表示しているときに)メンバーリストがあります。私はテーブルを見つけて(または反復して)、電子メールアドレスを照合したいと思っています。それが見つかると、「アクション」メニューを有効にする行(チェックボックス)を選択します。アクションメニューから、配信設定を「メールなし」に更新します。
メンバーページのスクリーンショットとHTMLのスニペットを添付しました。
Googleグループのテーブルに固有の提案/回答を投稿してください。私は、単純なHTMLページでは動作するが、Googleグループでは動作しない他の6つのアプローチを試みました。
おかげ
は、ここで私がアクセスしようとしているメニューのスクリーンショットです。
「アクション」メニューボタンをクリックすると、前後にホバーメニューが表示されます。
<div tabindex="0" role="button" class="IVILX2C-n-a jfk-button-standard IVILX2C-k-c IVILX2C-n-a-selected IVILX2C-n-j" aria-haspopup="true" aria-controls="gwt-uid-809" aria-expanded="true" aria-disabled="false" data-title="Actions" aria-activedescendant="gwt-uid-819">
注後
<div tabindex="0" role="button" class="IVILX2C-n-a jfk-button-standard IVILX2C-k-c" aria-haspopup="true" aria-controls="gwt-uid-809" aria-expanded="false" aria-disabled="false" data-title="Actions">
前に、 "GWT-UID XXX" の値は、セッションの間に一貫性がありません。
更新:これらの3行は、[アクション]メニューをクリックして「変更の配信設定」を合わせると、「いいえ電子メール」をクリックしないように動作するようには思え
@driver.element(text: 'Actions').click
@driver.element(text: 'Change delivery setting').hover
@driver.div(class: 'popupContent', index: 1).div.div.div(text: 'No email').click
EDIT:
以下のコードrequire 'rubygems'
require 'watir-webdriver'
require 'logger'
require 'csv'
def setup
@driver = Watir::Browser.new :chrome
# set the timeout for implicit waits
@driver.driver.manage.timeouts.implicit_wait = 5
#Create log file
if @logger.nil?
@logger = Logger.new('D:/Google Drive/_code/GroupsEmailSetting/ChangeDeliverySetting_log.txt',10)
@logger.level = Logger::DEBUG
@logger.datetime_format = '%Y-%m-%d %H:%M:%S%z'
end
#admin credentials
@login_user = '[email protected]'
@login_pwd = 'pwd!'
end
def teardown
puts "Enter to close"
a = gets.chomp
@driver.quit
@logger.close
end
def run
setup
yield
teardown
end
run do
@driver.goto "https://accounts.google.com"
element = @driver.text_field(:id => "Email")
element.send_keys(@login_user)
@driver.button(:id => "next").click
element = @driver.text_field(:id => "Passwd")
element.send_keys(@login_pwd)
@driver.button(:id => "signIn").click
@logger.info "User logged in: #{@user}"
#TEMP # find users, change email setting
@domain = 'domain.com'
@group = 'watir_table'
@user = '[email protected]'
@dsetting = 'No email'
@logger.info("Group & User selected: #{@group + "@" + @domain + " : " + @user}")
#END TEMP
@driver.goto "https://groups.google.com/a/domain.com/forum/#!managemembers/#{@group}/members/active"
@logger.info "Group loaded: #{@group}"
browser.span(text: '[email protected]').parent.parent.checkbox.click
end
:このような何かを試してみてください。私が手parent.parent.checkbox.click'' "NameError:未定義のローカル変数または私は "ブラウザ"を "@ドライバ"に変更すると、{:text - > "[email protected]"、:tag_name => "span"}を使用して、 ' – Ben
あなたのコードをあなたのコードで更新してください。 Watirを使用している場合は、次のようなものが必要です。 'browser = Watir :: Browser.new:chrome' – titusfortner
メインポストに自分のコードを追加しました。私はあなたが指摘したコマンドを持っています。これまでのところ、私のコードはテーブル内のテーブルまたは要素を見つけるまで動作します。 – Ben