質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

Q&A

1回答

803閲覧

agoutiでチェックボックスにチェックを入れる

T_retasu

総合スコア13

Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

0グッド

0クリップ

投稿2020/10/25 16:52

<input type="checkbox" name="checkname" id="checkid" value="checkvalue" class="checkclass" checked="checked">

をagoutiでチェックを入れるにはどうすればいいのでしょうか?

page, err := driver.NewPage(agouti.Browser("chrome")) page.Navigate("https://www~")

をして
page.FindByID("checkid").Check()
page.FindByID("checkid").Click()
としてもできませんでした

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yasutakatou

2020/10/26 02:49

仰っている「できませんでした」はエラーが無いのに、チェックが付かないと思っていいでしょうか。 という推測からいくとpage, err := driver.NewPage(agouti.Browser("chrome"))のerrはエラーではないですよね。コンソールに何も出ないということで良いでしょうか。またチェック以外のagoutiの動作はどうでしょうか。chromeのドライバが正常に動いているかどうかを確認したいです。
T_retasu

2020/10/26 03:19

page.Navigateまでは問題なくできています スクリーンショットを撮ってみるとちゃんとそのページが写し出されています ですのでチェックだけの問題かなと認識しています
yasutakatou

2020/10/26 04:54

ご確認ありがとうございます!となるとドライバは正常に動いていることになります。 頂いた部分的なhtmlだけだとこちらで試すのも難しいので、コードは書いていませんがFindByIDでクリックしている例が見つからなかったので一旦、 https://qiita.com/ekzemplaro/items/8c84c4afbc4365e6b149 以下の書式に書き直してもらうことは可能でしょうか?事例ベースの回答となってしまい申し訳ございませんが。。 str_select = "input[type='checkbox'][id='plan_b']" item = page.Find(str_select) item.Click()
T_retasu

2020/10/26 07:00

ありがとうございます item.Click() も item.Check() もやってみたのですがスクリーンショットをとってもチェックは入っていませんでした
yasutakatou

2020/10/26 07:11

肝心な部分を書きもれました!大変申し訳ないです。 「checkbox以外の操作は効きますか?」です。テキストボックスの入力などを想定しております。 あと、チェック付けたいURLって教えて頂くことは難しいですよね・・
T_retasu

2020/10/26 07:18

このページではないのですが、このページに来る前のログイン画面でパスワードを入力してからのsubmitはできました このページは条件を満たさないと表示がされないものになりますので教えても試される事は難しいと思います すいません
yasutakatou

2020/10/27 00:10

ご返信が遅くなり大変申し訳ないです。手元でもテストしようとしたのですがうまくいかなくて。 (ミイラ取りがミイラに・・笑) 一点確認ですが、html上ではchecked="checked"なのでチェックは最初から入っているようにも見えます。 なので、何もしなければチェックボックスがどういう状態なのかという点が気になります。
T_retasu

2020/10/27 04:26

checkedなのですがチェックは何故か入っていないのです
T_retasu

2020/10/28 02:50

症状でググっていた所、pythonのseleniumなのですが from selenium.webdriver.common.action_chains import ActionChains element = driver.find_element_by_xpath("~") ActionChains(driver).move_to_element(element).click(element).perform() ならできるとあり、pythonでこれを試してみるとできました agoutiではないのですが
guest

回答1

0

以下の事例ではcheckedの値がtrueになっています。

index.html

html

1<input id="check1" type="checkbox" />

main.go

go

1package main 2 3import ( 4 "fmt" 5 "log" 6 "os" 7 8 "github.com/sclevine/agouti" 9) 10 11func main() { 12 driver := agouti.PhantomJS() 13 if err := driver.Start(); err != nil { 14 log.Fatalf("Failed to start driver:%v", err) 15 } 16 defer driver.Stop() 17 page, err := driver.NewPage() 18 if err != nil { 19 log.Fatalf("Failed to open page:%v", err) 20 } 21 wd, _ := os.Getwd() 22 url := fmt.Sprintf("file://%s/index.html", wd) 23 if err := page.Navigate(url); err != nil { 24 log.Fatalf("Failed to navigate:%v", err) 25 } 26 if err := page.FindByID("check1").Check(); err != nil { 27 log.Fatalln(err) 28 } 29 fmt.Println(page.FindByID("check1").Attribute("checked")) 30}

出力

true <nil>

もちろん、Check()のところをコメントアウトにすれば出力はfalseになります。

投稿2020/10/27 08:26

編集2020/10/28 03:24
nobonobo

総合スコア3367

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

T_retasu

2020/10/28 02:51

ありがとうございます pythonのseleniumですと from selenium.webdriver.common.action_chains import ActionChains element = driver.find_element_by_xpath("~") ActionChains(driver).move_to_element(element).click(element).perform() ですとクリックはできました agoutiではないのですが
yasutakatou

2020/10/28 02:58

んーやりたいことはできたけど、最初のやりかたでは無かったという結果ですね。 挙動的にagoutiのバグかもしれませんが、解決したのでこれ以上トレースしてもなあ、、ってとこでしょうか。すみませんが、これ以上時間をかける意味がないのでここまででクローズですかね。。
nobonobo

2020/10/28 03:33 編集

質問に対応する処理が実現できている回答のつもりです。 この回答のコードでChromeDriverに変更すると表示されるブラウザ表示でチェックボックスが操作通りに反映することを確認できました。
nobonobo

2020/11/02 00:22

もし、そうならないというのであれば環境に関する情報を比較していくしか解決方法は見つからないと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問