34-第4步_处理选择列表和单选按钮
第4步:处理选择列表和单选按钮
“wizard powers”问题的下拉列表和Robocop字段的单选按钮处理起来比文本框输入需要更多技巧。要用鼠标点选这些选项,你必须搞清楚每个可能选项的x、y坐标。然而,用箭头键来选择会比较容易。
在程序中加入以下代码:
#! python3
# formFiller.py - Automatically fills in the form.
--snip--
# Fill out the Source of Wizard Powers field.
❶ if person['source'] == 'wand':
❷ pyautogui.write(['down', '\t'] , 0.5)
elif person['source'] == 'amulet':
pyautogui.write(['down', 'down', '\t'] , 0.5)
elif person['source'] == 'crystal ball':
pyautogui.write(['down', 'down', 'down', '\t'] , 0.5)
elif person['source'] == 'money':
pyautogui.write(['down', 'down', 'down', 'down', '\t'] , 0.5)
# Fill out the RoboCop field.
❸ if person['robocop'] == 1:
❹ pyautogui.write([' ', '\t'] , 0.5)
elif person['robocop'] == 2:
pyautogui.write(['right', '\t'] , 0.5)
elif person['robocop'] == 3:
pyautogui.write(['right', 'right', '\t'] , 0.5)
elif person['robocop'] == 4:
pyautogui.write(['right', 'right', 'right', '\t'] , 0.5)
elif person['robocop'] == 5:
pyautogui.write(['right', 'right', 'right', 'right', '\t'] , 0.5)
--snip--
在下拉列表获得焦点后(回忆一下,你写了代码,在填充Greatest Fear(s)输入框后模拟了按Tab键),按向下键,就会移动到选择列表的下一项。根据 person['source']
中的值,你的程序知道应该发出几次按向下键的命令,然后切换到下一个输入区。如果这个用户词典中的 'source'
键的值是 'wand'
❶,我们模拟按向下键一次(选择Wand),并按Tab键❷。如果 'source'
键的值是 'amulet'
,模拟按向下键两次,并按Tab键。对其他可能的值也是类似的。
Robocop问题的单选按钮,可以用向右键来选择。或者,如果你想选择第一个选项❸,就按空格键❹。