【问题标题】:Cannot get current URL in Selenium::Remote::Driver in perl无法在 perl 中获取 Selenium::Remote::Driver 中的当前 URL
【发布时间】:2020-07-07 16:58:11
【问题描述】:

我导航到谷歌并调用了 get_current_url() 方法。但它显示超时并退出程序。

这是我试过的代码

my $driver = Selenium::Remote::Driver->new(
  'browser_name' => 'firefox',
  'platform'     => 'Windows',
  'extra_capabilities' => {
    'moz:firefoxOptions' => {},
   }
 );
$driver->debug_on() ;
$driver->get("https://www.google.com/");
wait_until {print $driver->get_path()};
$driver->quit;

我已经打开调试并在控制台中得到以下输出

Prepping get
Executing get
REQ: POST, http://localhost:4444/wd/hub/session/69ced133-9420-4b0e-a7fd-e4f6bb343f7e/url, {"url":"https://www.google.co.in/"}
RES: {"value":null}

Prepping getCurrentUrl
Executing getCurrentUrl
REQ: GET, http://localhost:4444/wd/hub/session/69ced133-9420-4b0e-a7fd-e4f6bb343f7e/url, {}
RES: read timeout at C:/Perl64/lib/Net/HTTP/Methods.pm line 268.


Error while executing command: Server returned error message read timeout at C:/Perl64/lib/Net/HTTP/Methods.pm line 268.
 instead of data at C:/Perl64/site/lib/Selenium/Remote/Driver.pm line 403.
 at C:/Perl64/site/lib/Selenium/Remote/Driver.pm line 353.
Prepping quit
Executing quit
REQ: DELETE, http://localhost:4444/wd/hub/session/69ced133-9420-4b0e-a7fd-e4f6bb343f7e, {}

在控制台中,程序在这里停留了一段时间-“正在执行 getCurrentURL”,然后显示超时消息-Res:read timeout

【问题讨论】:

    标签: selenium perl


    【解决方案1】:

    以下适用于我使用 Windows 10,Strawberry Perl 版本 5.30.1。

    我从

    安装了geckodriver.exe

    https://github.com/mozilla/geckodriver/releases

    和来自

    的Selenium Server

    https://www.selenium.dev/downloads/

    然后从

    下载firefox二进制文件

    https://www.mozilla.org/en-US/firefox/new/

    然后从命令提示符成功启动服务器:

    > java  "-Dwebdriver.gecko.driver=geckodriver/geckodriver.exe" -jar selenium-server/selenium-server-standalone-3.141.59.jar -host localhost -port 4444
    20:00:48.591 INFO [GridLauncherV3.parse] - Selenium server version: 3.141.59, revision: e82be7d358
    20:00:53.896 INFO [GridLauncherV3.lambda$buildLaunchers$3] - Launching a standalone Selenium Server on port 4444
    2020-07-06 20:00:54.601:INFO::main: Logging initialized @12170ms to org.seleniumhq.jetty9.util.log.StdErrLog
    20:01:05.928 INFO [WebDriverServlet.<init>] - Initialising WebDriverServlet
    20:01:23.567 INFO [SeleniumServer.boot] - Selenium Server is up and running on port 4444
    

    现在下面的 Perl 脚本可以工作了:

    use feature qw(say);
    use strict;
    use warnings;
    use Selenium::Remote::Driver;
    my $driver = Selenium::Remote::Driver->new(
        remote_server_addr => "127.0.0.1"
    );
    $driver->get('http://www.google.com');
    say "Result: ", $driver->get_title();
    $driver->quit();
    

    输出

    Result: Google
    

    注意:使用localhost 代替127.0.0.1 代替remote_server_addr 出于某种原因不起作用,请参阅this question 了解更多信息。

    【讨论】:

    • 问题出在我下载的 selenium 服务器上。现在它工作正常
    猜你喜欢
    • 1970-01-01
    • 2016-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-27
    • 2013-04-05
    • 1970-01-01
    相关资源
    最近更新 更多