お世話になっております。JavaScript で自動化をやっておりまして、
要約すると取得したオブジェクトが複数なのに1個にしか見えないと言う
問題を解決したいのです。
今画面に三角ボタンが2つ配置されておりプルダウンの機能があります。
三角ボタンのクラス名を取得し、そのクラスオブジェクトに対して、
クリックを行ったのですが、2つともプルダウンします。
そこで検証のディペロッパー画面で解析したのですが、
2つを区別するものがありませんでした。
sankaku.length がアンデファインドとなっていたし、
何かが2個と言うプロパティは見つかりませんでした。
思うにこれは1つのクラス名で作成したボタンを
2ヶ所に配置している為だと思います。
ボタンの位置で分けようと .top の値の上と下の数値を探しましたが、
その様なプロパティは見つかりませんでした。
以下にコードを示します。アドバイスかヒントの程、よろしくお願いします。
sankaku = document.getElementsByName("sankaku-button")[0];
sankaku.click();
No.5ベストアンサー
- 回答日時:
こういうことでしょうか?
・chromeの拡張機能を自作している。
・会社のシステムなので、htmlは書換えできない。
・chromeの、検証のディペロッパー画面(devtools)は使える。
わたしは拡張機能はよく知らないので、
その部分で役に立つ回答はできませんが、
とりあえず、devtoolsが使えるのなら、
ctrl + shift + Jで、コンソール画面を出して、
document.getElementsByClassName('sankaku-button');
を入力して、2つの要素が出てくるかどうか
確認してみるのはいかがでしょうか。
参考:https://murashun.jp/article/performance/chrome-d …
要素が2つ出てくるなら、[0]と[1]でそれぞれ操作できるはずです。
もし要素が2つ出てこないなら、何か(セキュリティとか?)の理由で
手の込んだ作り方をしていると思われるので、
ソースコード見ないで解決するのは困難だと思います。
アドバイスありがとうございました。
結局ペアレントで親の属性を参照し、
親が所持している子供の数の相違で識別することができました。
No.4
- 回答日時:
No3です
補足を読んでもまったく要領を得ません。
どうやら、どこかのサイトというわけでもなさそうなので、ご自分で作ったHTMLということで良いのでしょうか?
>画面に情報を入力して読み込みボタンを押すと、
>プルダウンの情報がたたまれてしまうので、
その仕様が悪いとしか言えません。
たたまれないようにすれば済む話ではないのですか?
>1秒毎に三角ボタンを押して常にプルダウンで
>詳細を表示した状態にしようと言う趣向です。
最悪のドツボにはまってませんか?
臭いの元を放置して、芳香剤をぶちまけたら、その匂いがきついので、消臭剤を振り撒く・・・
>getElementByIdをしようにもIDが設定されていないようでした。
HTMLにidを振れば済む話です。
とは言え、それで解決するとも思えませんけれど・・・
(要素の取得の問題ではないのでしょうから)
No3にも記しましたけれど、いずれにしろ、文書の構成や仕組みが不明のままでは、症状のみをいくら叫ばれても、対処法はわかりかねます。
(No3に示した、いくつかの疑問点さえ不明のままですし…)
いえいえ。どこかのサイトと言うより自社のクラウドシステムです。
Chromeで動作しており、これがまた使いづらいと。
改善には開発元に数百万円の投資が必要なので、
せめて自分で使う分には動作仕様を変えようと言う趣向です。
画面にある名前から宛先データベースと照合して、
自動でメールを出すなんてのを作ったもので、
気をよくして今回のテーマを実現している次第です。
詳しくアドバイスをしていただき感謝しております。
ディベロッパーツール画面の使い方もようやく分かって来たし、
特に納期はないので勉強しつつ、地道にやって行こうと思います。
ありがとうございました。色々とがんばってみます。
No.3
- 回答日時:
こんにちは
曖昧模糊としているので、状況がまったくわかりませんけれど・・・
HTMLに組み込んだスクリプトの話でしょうか?
それとも、ブックマークレットとか?
素のスクリプトなら、ご提示の変数:sankaku は単一オブジェクトのはずです。
また、仮に、複数オブジェクトだとするなら、それに対して
>sankaku.click();
は、エラーになるはずです。
>クリックを行ったのですが、2つともプルダウンします。
HTML内に他のスクリプト等が動作していませんか?
あるいはCSS等で連動するような仕組みになっているとか…
直接の手操作でクリックした場合には、発生しない事象ということなのでしょうか?
>画面に三角ボタンが2つ配置されておりプルダウンの機能があります。
通常のSelect要素ではなさそうなので、CSSかスクリプトでプルダウンさせているものと推測しますけれど、どういう仕組みのものなのでしょうか?
一方で、
>自動化をやっておりまして
>2つともプルダウンします
何を目的としているのか不明ですけれど、単なる操作なので、両方プルダウンしたところで別に問題はなさそうにも思われます。
そもそも、「操作を自動化」しないとできない内容なのでしょうか?
(操作などせずに、直接結果を得ることはできないのですか)
※ 事象を再現可能な簡略化したHTMLと、最終的になさりたいことを提示していただければ、わかるかも知れません。
No.2
- 回答日時:
>クリックを行ったのですが、2つともプルダウンします。
これだけの情報ではわからないですね。プルダウンの具体的な
実現方法が必要。
>sankaku = document.getElementsByName("sankaku-button")[0];
>sankaku.length がアンデファインドとなっていたし、
document.getElementsByNameの返してきたノードリストの最初の
ノードを [0] で選択しているのだから当然です。
ノードリストなら lengthが使えます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript javaScriptで画面に値を入れるには 1 2022/08/14 12:27
- Excel(エクセル) マクロでボタンにつける名前がどこに設定されているかわからないケースがありました。 1 2023/06/19 19:37
- JavaScript javascriptで移動ボタンを押した際に遷移するボタンを追記したい 1 2022/11/29 03:02
- JavaScript オブジェクト配列の各メンバを任意の式で評価して、その評価値が最大のオブジェクトを返す関数はありますか 2 2023/05/20 15:02
- Illustrator(イラストレーター) Illustratorでオブジェクトの色が勝手に変わって困っています。 4 2022/09/04 18:47
- Visual Basic(VBA) ExcelのVBAを使い、複数シートの同一箇所を、同一条件にて一括でソルバーを回す方法について 1 2022/04/23 11:49
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- その他(ソフトウェア) Figma 1 2023/06/23 14:22
- Visual Basic(VBA) 複数ファイルのデータの統合について 12 2022/05/14 12:03
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
タブブラウザで focus() を実...
-
エクセル2010のvbaについて
-
VB.NET2003 テキストボックスに...
-
PowerPointで時計表示
-
JSPの処理の途中で、JavaScript...
-
javascriptからサーバサイドの...
-
IEでalertのみを無効にする方法...
-
あるurlが存在する(?)かどう...
-
if(1){...}とはどういうことで...
-
禁止文字チェック
-
JavascriptでのExcel起動について
-
VBAの[cellsメソッドは失敗しま...
-
VBAによる第3、4水準文字の判定...
-
csvファイルを読み込み、該当項...
-
PHPができればJavaScriptは...
-
JavaScriptで ブラウザの閉じる...
-
IE8開発者ツールでソースの修正
-
ページを一回だけリロードさせ...
-
1つのVBAコードをすべてのコア...
-
gas 全角数字を半角数字に変換
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ローカルのレジストリを読みたい
-
Webページ中の javascript をVB...
-
エクセル2010のvbaについて
-
画面間でのJavaScrip...
-
クラス デフォルトプロパティの...
-
evtとは
-
javaScriptでグローバル変数に...
-
PHPで定義した変数を引数として...
-
jquery か javascript で json ...
-
【javascript】プロパティ?オ...
-
for each for in
-
JavascriptのDOMについて
-
イベントリスナに登録される fu...
-
フォルダ内のファイル名を取得...
-
文字を移動させその位置を表示...
-
CSSのクラスを動的に変更 classで
-
jQueryで、listの要素数を取得...
-
javascript 親オブジェクトと子...
-
VBSを学ぶ前に、、、
-
Ajaxのプログラムをオブジェク...
おすすめ情報
Google Chrome を使っておりマニフェストを作成すれば、
JavaScriptで画面を操作できるところまでこぎつけました。
ブックマークレットが何かもよく分からない初心者です。
見よう見まねでプログラミングに成功し、
画面のフィールドに値を連続投入したりできる程になりました。
中身が公表されない画面を解析して
自分の好みにスクリプトを組み込んで操作するので、
画面の仕様は分からない状態です。
画面に情報を入力して読み込みボタンを押すと、
プルダウンの情報がたたまれてしまうので、
新しい情報を入力をしても、
1秒毎に三角ボタンを押して常にプルダウンで
詳細を表示した状態にしようと言う趣向です。
逆に2個プルダウンしてしまう今の作り込みでは、
画面が縦に広がり過ぎて必要な情報が
スクロールの下に出て隠れてしまうと言う問題が発生。
これを何とかしたい。とこの様な状態です
アドバイスありがとうございます。
getElementByIdをしようにもIDが設定されていないようでした。
取得したオブジェクト sankaku.Id は undefined になりました。
"sankaku-button"はディペロッパー画面に載っていたので調べることができましたが、
getElementByIdに指定する名前を調べる方法が分かりませんでした。
アドバイスありがとうございます。まさにその通りです。
devtoolsでブレークポイントを設定して問題の部分で止め解析したのですが、
2つを区別するようなものは見当たりませんでした。
ふと思ったのですが、ペアレントで親の属性を参照すれば、
親から違いを見つけられるかもしれません。
devtoolsのURLありがとうございます。色々探しましたが、
ここまでの解説はなかなか見当たらず、大変感謝しております。
拡張機能で Chromeに右クリックメニューを追加して、こんな時はこれと、
便利な機能を追加しています。おかげで Chromeからエクセルにデータ取得、
エクセルからChromeに連動とかもメニューに機能を追加してこなせるようになりました。
土日を挟んでしまい検証できないので、また試みてみます。
アドバイス大変感謝しています。ありがとうございました。