机器人框架同时点击多个对象
Robot framework click on more objects at the same time
我需要能够点击更多可点击的元素,这些元素是 SVG 图表的一部分。
我可以单独单击任何一个栏,但我还必须 select 多个栏,然后单击另一个 link 以在另一个视图中打开数据所有 selected 项目,一共。
我想循环执行,比如
Press key ${BAR ELEMENT} CTRL
然后单击最后一个条目。但是我不断收到 Press Key 关键字的错误:
WebDriverException: Message: unknown error: cannot focus element
(Session info: chrome=55.0.2883.87)
(Driver info: chromedriver=2.25.426923 (0390b88869384d6eb0d5d09729679f934aab9eed),platform=Windows NT 6.1.7601 SP1 x86_64)
即使我把 FOCUS ${BAR ELEMENT}
放在 Press key
之前,它也会抛出同样的错误。
点击 ${BAR ELEMENT}
没有问题(即使在循环中)。
此外,我什至不确定是否可以使用 CTRL(或者它可能是 CONTROL,或者我必须使用 ASCII 代码),但我想了解一下。只是我连这一步都做不到,所以有没有人有什么想法可以帮助?
最好能够独立于元素按住 CTRL 键,因为在这种情况下,聚焦元素以按下 CTRL 并没有真正意义,但 Press key
不能在没有定位器的情况下使用。
我附上了我需要点击的条形图(蓝色)以供参考:
所以我找到了解决方案:
我准备了 python 函数来按住 ctrl 和释放 ctrl
def hold_ctrl(self):
self.get_action_chain().key_down(Keys.LEFT_CONTROL)
self.get_action_chain().perform()
def release_ctrl(self):
self.get_action_chain().key_up(Keys.LEFT_CONTROL)
self.get_action_chain().perform()
然后我在执行点击的循环中使用了它:
some code before..
hold ctrl
:for ${value} IN @{list}
\ wait until element is visible ${BARS}
\ ${bar_xpath}= bar of specific value ${BARS} ${value}
\ wait until element is visible ${bar_xpath}
\ click element ${bar_xpath}
release ctrl
release ctrl
${bar_xpath}= bar of specific value ${BARS} ${value}
click element ${bar_xpath}
唯一奇怪的是我必须使用 release ctrl
两次,否则它不起作用...
我需要能够点击更多可点击的元素,这些元素是 SVG 图表的一部分。
我可以单独单击任何一个栏,但我还必须 select 多个栏,然后单击另一个 link 以在另一个视图中打开数据所有 selected 项目,一共。
我想循环执行,比如
Press key ${BAR ELEMENT} CTRL
然后单击最后一个条目。但是我不断收到 Press Key 关键字的错误:
WebDriverException: Message: unknown error: cannot focus element
(Session info: chrome=55.0.2883.87)
(Driver info: chromedriver=2.25.426923 (0390b88869384d6eb0d5d09729679f934aab9eed),platform=Windows NT 6.1.7601 SP1 x86_64)
即使我把 FOCUS ${BAR ELEMENT}
放在 Press key
之前,它也会抛出同样的错误。
点击 ${BAR ELEMENT}
没有问题(即使在循环中)。
此外,我什至不确定是否可以使用 CTRL(或者它可能是 CONTROL,或者我必须使用 ASCII 代码),但我想了解一下。只是我连这一步都做不到,所以有没有人有什么想法可以帮助?
最好能够独立于元素按住 CTRL 键,因为在这种情况下,聚焦元素以按下 CTRL 并没有真正意义,但 Press key
不能在没有定位器的情况下使用。
我附上了我需要点击的条形图(蓝色)以供参考:
所以我找到了解决方案:
我准备了 python 函数来按住 ctrl 和释放 ctrl
def hold_ctrl(self):
self.get_action_chain().key_down(Keys.LEFT_CONTROL)
self.get_action_chain().perform()
def release_ctrl(self):
self.get_action_chain().key_up(Keys.LEFT_CONTROL)
self.get_action_chain().perform()
然后我在执行点击的循环中使用了它:
some code before..
hold ctrl
:for ${value} IN @{list}
\ wait until element is visible ${BARS}
\ ${bar_xpath}= bar of specific value ${BARS} ${value}
\ wait until element is visible ${bar_xpath}
\ click element ${bar_xpath}
release ctrl
release ctrl
${bar_xpath}= bar of specific value ${BARS} ${value}
click element ${bar_xpath}
唯一奇怪的是我必须使用 release ctrl
两次,否则它不起作用...