如何按住watir webdriver中的控制键

时间:2012-05-29 14:57:32

标签: ruby watir watir-webdriver firewatir

我今天遇到了一个小问题,我需要按住Control键一段时间并选择{n}行数。

以下是我的代码片段,非常感谢任何帮助。

!!! ...我想按住控制键点击一行,然后点击另一行,最后释放控制键...... !!!

while(enclosure_count_remove> 0)

     $browser.element(:xpath,"//table[@id ='selectConfiguration']/tbody/tr[0]").click(:control);
     $browser.element(:xpath,"//table[@id ='selectConfiguration']/tbody/tr[1]").click(:control);
     enclosure_count_remove -= 1;

我尝试的第二种方式如下:

while(enclosure_count_remove> 0)

     $browser.send_keys :control
     $browser.element(:xpath,"//table[@id ='selectConfiguration']/tbody/tr[0]").click;
     $browser.element(:xpath,"//table[@id ='selectConfiguration']/tbody/tr[1]").click;
     enclosure_count_remove -= 1;

两次都不适合我,每次都能点击但无法按住并点击两个实体。

谢谢!

阿迪蒂亚

2 个答案:

答案 0 :(得分:0)

在查看watir-webdriver的Element.click()方法之后,我认为您必须直接使用webdriver action builder。试试这个:

action = $browser.driver.action
action.key_down(:control)
action.click $browser.element(:xpath,"//table[@id ='selectConfiguration']/tbody/tr[0]").wd
action.click $browser.element(:xpath,"//table[@id ='selectConfiguration']/tbody/tr[1]").wd
action.key_up(:control)
action.perform

我没有网页来测试这个,所以我纯粹是基于文档。

答案 1 :(得分:0)

click方法采用修饰符参数。这应该允许您使用任意数量的“按下”键进行点击。有关您应该能够执行的详细信息,请参阅the rdocs on the click method

browser.table(:id => 'selectConfiguration').row[0].click(:control)

当然,假设您确定要单击哪些行并且它们永远不会更改。通常情况下,我会根据匹配某些独特的文本或其他内容来选择行,更类似于人类可能选择要选择的行的方式。

browser.table(:id => 'selectConfiguration').row(:text => /text_fragment/).click(:control)