Perl 使selenium webdriver可从internet访问

Perl 使selenium webdriver可从internet访问,perl,selenium,Perl,Selenium,我想运行一个Perl脚本,它部署用于从严重依赖JavaScript的网站获取数据。Perl脚本和SeleniumWebDriver应该在不同的机器上运行(分别是客户端和服务器) 我在服务器上使用 /usr/bin/xvfb run-e/dev/stdout java-Dwebdriver.gecko.driver=/opt/gecko/geckodriver-jar/opt/selenium/selenium.jar Xvfb已经启动 WebDriver报告已正确启动,并显示在进程列表中 ro

我想运行一个Perl脚本,它部署用于从严重依赖JavaScript的网站获取数据。Perl脚本和SeleniumWebDriver应该在不同的机器上运行(分别是客户端和服务器)

我在服务器上使用

/usr/bin/xvfb run-e/dev/stdout java-Dwebdriver.gecko.driver=/opt/gecko/geckodriver-jar/opt/selenium/selenium.jar
Xvfb已经启动

WebDriver报告已正确启动,并显示在进程列表中

root 6830 6800 7 18:17 pts/0 00:00:01 java-Dwebdriver.gecko.driver=/opt/gecko/geckodriver-jar/opt/selenium/selenium.jar
进程正在侦听端口4444

netstat-tulpn | grep6830
tcp6 0:::4444:::*侦听6830/java
然后,我尝试配置防火墙,以根据

iptables-A输入-p tcp--dport 4444-s-j接受
iptables-A输入-p tcp-dport 4444-j丢弃
Perl脚本

使用Selenium::Remote::Driver;;
$sel=Selenium::Remote::Driver->new;
$sel->get(“http://example.com");
打印$sel->get_page_source();
$sel->退出;
当在服务器上本地运行时,它可以正常工作,并返回所需的数据

但在客户端计算机上运行时,使用修改的构造函数

$sel=Selenium::Remote::Driver->new(Remote\u server\u addr=>”;
它拒绝工作

Selenium服务器在/Selenium/Remote/Driver.pm第401行没有返回正确的状态

在客户端上发出telnet命令以检查服务器的WebDriver端口

telnet 4444
尝试
表示端口未打开

我错过了什么

ifconfig
lo链路封装:本地环回
inet地址:127.0.0.1掩码:255.0.0.0
inet6地址:1/128作用域:主机
上环回运行MTU:65536公制:1
接收数据包:5015907错误:0丢弃:0溢出:0帧:0
发送数据包:5015907错误:0丢弃:0溢出:0载波:0
冲突:0 txqueuelen:0
接收字节:14346946990(1.3 GiB)发送字节:14346694690(1.3 GiB)
venet0链路营地:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet地址:127.0.0.1 P-t-P:127.0.0.1 Bcast:0.0.0掩码:255.255.255
inet6地址:2/128范围:兼容
运行NOARP MTU的上行广播点:1500公制:1
接收数据包:17549498错误:0丢弃:0溢出:0帧:0
发送数据包:18398702错误:0丢弃:111溢出:0载波:0
冲突:0 txqueuelen:0
接收字节:11881977702(11.0 GiB)发送字节:4577577462(4.2 GiB)
venet0:0链接营地:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet地址:178.254.xxx.xxx P-t-P:178.254.xxx.xxx Bcast:178.254.xxx.xxx掩码:255.255.255
运行NOARP MTU的上行广播点:1500公制:1
venet0:1链路营地:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet地址:178.254.xxx.xxx P-t-P:178.254.xxx.xxx Bcast:178.254.xxx.xxx掩码:255.255.255
运行NOARP MTU的上行广播点:1500公制:1

“Perl脚本和Selenium WebDriver应该在不同的机器上运行(分别是客户端和服务器)”Perl程序和Selenium进程不是客户端和服务器。网站是服务器;SeleniumWebDriver是一个HTTP客户端;Perl程序只是控制它的行为。在与Perl应用程序不同的系统上运行Selenium会使整个过程变得不必要的困难。系统是否在NAT设备后面?如果是这样的话,您需要在网关设备上配置端口转发。可能iptables与tcp6不兼容?@Borodin:“在不同的系统上运行Selenium会使整个过程变得不必要的困难。”-这是不可避免地从客户机需求和系统限制演变而来的。如果我能在同一台机器上运行两个系统,我会这样做。;-)@stevieb:承载Webdriver的机器是一个VPS,我不太了解提供商设置的网络配置。有没有一种方法可以在不必咨询热线的情况下从技术上找到答案,这通常会耗费该供应商的时间?“Perl脚本和Selenium WebDriver应该在不同的机器上运行(分别是客户端和服务器)”Perl程序和Selenium进程不是客户端和服务器。网站是服务器;SeleniumWebDriver是一个HTTP客户端;Perl程序只是控制它的行为。在与Perl应用程序不同的系统上运行Selenium会使整个过程变得不必要的困难。系统是否在NAT设备后面?如果是这样的话,您需要在网关设备上配置端口转发。可能iptables与tcp6不兼容?@Borodin:“在不同的系统上运行Selenium会使整个过程变得不必要的困难。”-这是不可避免地从客户机需求和系统限制演变而来的。如果我能在同一台机器上运行两个系统,我会这样做。;-)@stevieb:承载Webdriver的机器是一个VPS,我不太了解提供商设置的网络配置。有没有一种方法可以在不必咨询热线的情况下从技术上了解到这一点,而这通常会耗费该供应商的时间?