机器人框架同时点击多个对象

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 两次,否则它不起作用...