我需要能够点击更多可点击的元素,这些元素是SVG图表的一部分。
我可以单独点击任何一个栏,但我还必须选择多个栏,然后点击另一个链接,在另一个视图中打开所有选定项目的数据。
我想在循环中执行此操作,例如
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
不能没有定位器。
答案 0 :(得分:3)
所以我找到了解决方案:
我准备了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
两次,否则它不起作用......