1

我需要能够点击更多可点击的元素,这些元素是 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不能在没有定位器的情况下使用。

我附上了一张我需要单击(蓝色)的条形图以供参考: 在此处输入图像描述

4

1 回答 1

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

于 2017-01-17T07:42:22.340 回答