如何使用perl语言在selenium远程驱动程序中打开新选项卡并打开URL

时间:2013-12-06 10:44:31

标签: perl selenium-webdriver

我正在使用Selenium :: Remote :: Driver模块,我想使用perl语言在firefox浏览器中打开新标签,你能告诉我我必须使用哪种方法。

**tabsprogram.pl**


use Selenium::Remote::Driver;
use Selenium::Remote::WDKeys;

my $driver = Selenium::Remote::Driver->new();
 if(defined $driver)
{

  $driver->get("https://www.google.co.in/");
  $driver->set_implicit_wait_timeout(40000);
  $driver->find_element('body','tag_name')->send_keys(KEYS->{'Ctrl','t'});# the element is find but tab is not clicked
}

但我没有得到任何错误消息,新选项卡也没有打开,驱动程序退出。     请帮帮我....

1 个答案:

答案 0 :(得分:2)

我这样做是为了让它发挥作用

  $driver->send_keys_to_active_element(KEYS->{'command_meta'}, 't');

但是我在Mac上,Firefox希望Meta-T打开一个新标签

如果你这样做

perldoc -l Selenium::Remote::WDKeys

获取模块的位置然后查看它有类似

的内容
use constant KEYS => {
    'null'       => "\N{U+E000}",
    'cancel'     => "\N{U+E001}",
    'help'       => "\N{U+E002}",
    'backspace'  => "\N{U+E003}",
    'tab'        => "\N{U+E004}",
    'clear'      => "\N{U+E005}",
    'return'     => "\N{U+E006}",
    'enter'      => "\N{U+E007}",
    'shift'      => "\N{U+E008}",
    'control'    => "\N{U+E009}",

所以你可能需要使用'control'这个词,而不是'Ctrl',你可以在不使用KEYS->的情况下传递't';

这些是根据模块http://code.google.com/p/selenium/wiki/JsonWireProtocol#/session/:sessionId/element/:id/value

中的链接使用的控制键