Selenium では時間がかかりすぎるフォーム (javascript の重い最新のフォーム) のテストを自動化しようとしています。xdotool を使用してウィンドウ ID を取得したいと考えています。xdotool selectwindow
呼び出してクリックできるようですが、毎回クリックする必要があります。「タブのタイトルがxのGoogle Chromeウィンドウの場合は、yを実行してください」と伝えたい
ここでウィンドウIDを取得しました:
cchilders@cchilders-Dell-Precision-M3800:~$ xdotool selectwindow
65011713
これはクロム自体のためのもので、クリックすると各タブは同じ値を取得します。だから私はpsまたはウィンドウマネージャでそれを見つけることを期待していましたが、そうではありません:
cchilders@cchilders-Dell-Precision-M3800:~$ wmctrl -l
0x03a00001 0 cchilders-Dell-Precision-M3800 views.py - /home/cchilders/work_projects - Atom
0x03a00048 0 cchilders-Dell-Precision-M3800 pip_freeze_update.py - /home/cchilders/scripts - Atom
0x03a000bc 0 cchilders-Dell-Precision-M3800 urls.py - /home/cchilders/work_projects - Atom
ps も機能しません。
(clientsite)cchilders@cchilders-Dell-Precision-M3800:~$ ps -alx
F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND
4 0 1 0 20 0 185188 5752 ep_pol Ss ? 0:06 /sbin/init splash
1 0 2 0 20 0 0 0 kthrea S ? 0:00 [kthreadd]
1 0 3 2 20 0 0 0 smpboo S ? 0:02 [ksoftirqd/0]
1 0 5 2 0 -20 0 0 worker S< ? 0:00 [kworker/0:0H]
1 0 7 2 20 0 0 0 rcu_gp S ? 1:10 [rcu_sched]
1 0 8 2 20 0 0 0 rcu_gp S ? 0:00 [rcu_bh]
...etc...
65011713 はどこにも表示されません。Xdotool は優れたツールですが、ウィンドウを操作するには、ウィンドウについて多くのことを知っている必要がWINDOW COMMANDS
あります。 #window_commandsには、よく知っているウィンドウを見つける方法がたくさんありますが、そのウィンドウ情報を自動的に取得する方法はあまりありません。URL の先頭部分をスクリプトに入力するなどして、ウィンドウ ID (xdotool が必要とする形式) を自動的に決定するにはどうすればよいですか? ありがとうございました
wmtrl で Google Chrome を探すことができます。
(scripts)cchilders@cchilders-Dell-Precision-M3800:~/scripts/bash$ wmctrl -l
0x03e00001 0 cchilders-Dell-Precision-M3800 Edit - Stack Overflow - Google Chrome
...
スペースで区切られた最初の数値を int に取得します。
In [13]: int("0x03e00001", 16)
Out[13]: 65011713
int の 16 フラグは、16 進数を想定していることを示します
In [14]: int("0x03e00001")
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-14-96517b980767> in <module>()
----> 1 int("0x03e00001")
ValueError: invalid literal for int() with base 10: '0x03e00001'