【发布时间】:2016-03-16 10:45:11
【问题描述】:
我正在尝试自动化测试 selenium 需要很长时间的表单(javascript 繁重的现代表单),我想使用 xdotool 并获取窗口 ID。我看到您可以致电xdotool selectwindow 并单击它,但是您每次都必须单击它。我想告诉它“对于标签标题为 x 的 google chrome windows,请执行 y”
我在这里得到了窗口 ID:
cchilders@cchilders-Dell-Precision-M3800:~$ xdotool selectwindow
65011713
这是针对 chrome 本身的,每个选项卡在单击时都会获得相同的值。所以我希望在 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 是一个很棒的工具,但是窗口操作需要你对窗口有很多了解,从我记得以前使用它的情况来看,https://www.semicomplete.com/projects/xdotool/xdotool.xhtml#window_commands 的WINDOW COMMANDS 部分有很多方法可以找到你知道的窗口关于自动获取该窗口信息的方式很多,但并没有太多。如何自动确定窗口 ID(xdotool 想要的格式),比如通过在 URL 的开头部分提供脚本?谢谢
您可以在 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 标志告诉它期望十六进制
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'
【问题讨论】:
-
65011713是一个二进制值。从wmctrl返回的值是十六进制值。您需要转换以使它们匹配(尽管这三个都没有,但我在该列表中根本看不到chrome)。不过,ps中的任何内容都与此无关。如果您无法获取选项卡的单个窗口 ID(您可能无法获取),那么您可能无法专门针对选项卡(或者甚至必须查看带有xdotool的选项卡首先)。 (可能值得查看xwininfo -tree的输出,看看您是否可以在那里找到所需的内容。) -
是的,没错,这很麻烦,但它解决了它
-
如果您希望我选择它,请将您的问题表述为问题。在花花公子投票结束这个特定的事情时,我几乎把我的脾脏翻了个底朝天。
-
您刚刚用自己制定的答案更新了您的问题吗?
-
使用 selenium,您可以在选项卡之间切换。 stackoverflow.com/questions/12729265/…
标签: linux bash scripting ps xdotool