3

我今天在我的项目中遇到了一个小问题,我需要按住 Control 键一会儿,然后选择 {n} 行。

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

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

而(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;

结尾

下面给出了我尝试的第二种方法

而(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;

结尾

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

谢谢!

阿迪亚

4

2 回答 2

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

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

于 2012-05-30T03:31:46.753 回答
0

click 方法采用修饰符参数。这应该允许您使用任意数量的“按住”键进行点击。有关详细信息,请参阅单击方法上的 rdocs您应该可以

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

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

browser.table(:id => 'selectConfiguration').row(:text => /text_fragment/).click(:control)    
于 2012-05-30T06:15:41.417 回答