0

我有一个使用 CPAN WWW::Selenium 的 selenium perl 脚本。

问题是当我打开我的应用程序时它不会打开它。但是,当我尝试谷歌时,它很好。我可以查询和页面等等。但是,当我打开我的页面时,其他窗口关闭并且主页被我的登录页面替换。

我能做些什么?我很困惑该怎么做。

index.html 页面是对 perl cgi 脚本的重定向。这可能是问题吗?

4

1 回答 1

1

我在http://search.cpan.org/~aivaturi/Selenium-Remote-Driver/lib/Selenium/Remote/Driver.pm上取得了更大的成功

use Selenium::Remote::Driver;

my $driver = new Selenium::Remote::Driver;
$driver->get('http://www.google.com');
print $driver->get_title();
$driver->quit();

更具体地说,Selenium 在您使用它时会创建一个全新的会话,因此您用于登录的机制将不可用,您将需要再次自动登录

更新以添加有关选择选择/组合框的详细信息。find_element(s) 方法返回 Selenium::Remote::WebElement 类型的对象http://search.cpan.org/~chowes/Selenium-Remote-Driver-0.17/lib/Selenium/Remote/WebElement.pm

use Test::More tests=>3;
use_ok 'Selenium::Remote::Driver';

foreach (qw( phantomjs )){
  note $_;

  my $driver = new_ok('Selenium::Remote::Driver' => [ browser_name => $_, proxy=>{proxyType=> 'direct'}]);

  ok $driver->get('http://www.websitedatabases.com/php_form_maker/html_forms/example-10.html');
  $driver->set_implicit_wait_timeout(100);

  my $combo = $driver->find_elements('//select[@name="what-to-do"]//option');

  map{ note $_->get_value } @$combo;

  $combo->[4]->click;
  note '1 '. $driver->find_element('//select[@name="what-to-do"]')->get_value;

  $combo->[0]->click;
  note '2 ' . $driver->find_element('//select[@name="what-to-do"]')->get_value;
}
于 2013-09-02T21:12:48.203 回答