标签: ghostdriver

Selenium与GhostDriver在Windows上的Python

这是令人尴尬的问题,因为它似乎是错误的机会.我不认为这会很困难,但我现在已经把它搞砸了近3个小时了,这让我很头疼.我已经阅读了几十个stackoverflow线程和谷歌线程.

我安装了PhantomJS,将它添加到我的系统变量路径中,它在命令行中正常工作.我之前还使用easy_install安装了Selenium.

我得到的错误是:

__init__    C:\Python27\lib\site-packages\selenium-2.39.0-py2.7.egg\selenium\webdriver\phantomjs\webdriver.py   50      

start   C:\Python27\lib\site-packages\selenium-2.39.0-py2.7.egg\selenium\webdriver\phantomjs\service.py 66      

WebDriverException: Message: 'Unable to start phantomjs with ghostdriver.' ; Screenshot: available via screen               
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

from selenium import webdriver

driver = webdriver.PhantomJS(executable_path="C:\Python27\misc\phantomjs\phantomjs.exe")
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

from selenium import webdriver

driver = webdriver.PhantomJS()
Run Code Online (Sandbox Code Playgroud)

我收到相同的错误消息.这一定很简单,我做错了.我很感激任何评论或答案.

Windows 7 64位Python 2.7

python selenium phantomjs ghostdriver

11
推荐指数
1
解决办法
1万
查看次数

如何使用java运行Selenium的ghostdriver

我想phantomJS用于一些网络测试,我遇到过GhostDriver(https://github.com/detro/ghostdriver).我使用自述文件中的说明构建它,我可以在指定的端口上运行它,但我不知道如何从我的java代码访问Web驱动程序.为了澄清,我在ruby中看到了这个例子:

  caps = {
  :browserName => "phantomjs",
  :platform => "LINUX"
   }

urlhub = "http://key:secret@hub.testingbot.com:4444/wd/hub"

client = Selenium::WebDriver::Remote::Http::Default.new
client.timeout = 120

@webdriver = Selenium::WebDriver.for :remote, :url => urlhub, :desired_capabilities => caps, :http_client => client
@webdriver.navigate.to "http://www.google.com/"
puts @webdriver.title
@webdriver.save_screenshot("./screenshot.png")
@webdriver.quit
Run Code Online (Sandbox Code Playgroud)

我只是不确定如何从java做同样的事情.

java webdriver phantomjs selenium-webdriver ghostdriver

10
推荐指数
2
解决办法
3万
查看次数

Selenium Webdriver和Selenium Ghostdriver有什么区别?

我想知道Selenium Webdriver和Selenium Ghostdriver之间的区别.

我也很困惑为什么使用selenium Ghostdriver?

请给我一个简短的想法.

提前致谢.

java selenium differentiation selenium-webdriver ghostdriver

10
推荐指数
1
解决办法
4953
查看次数

Ghostdriver 1.2.1 + PhantomJS 2.0 +最新的Selenium在Java中找不到变量错误

((JavascriptExecutor) driver).executeScript("arguments[0].click();", buttonToClick);
Run Code Online (Sandbox Code Playgroud)

^域名故意编辑.

根据无法找到变量 - PhantomJS这个错误与没有正确执行Javascript的执行有关.我不明白这在我的Java程序的上下文中意味着什么.

我的Selenium程序只有一种Javascript调用,它的工作原理如下:

String[] cli_args = new String[]{"--debug=false", "--web-security=false", "--ssl-protocol=any", "--ignore-ssl-errors=true"};
        DesiredCapabilities caps = DesiredCapabilities.phantomjs();
        caps.setCapability(PhantomJSDriverService.PHANTOMJS_CLI_ARGS, cli_args);
        caps.setCapability(PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY, "/Users/richard/Downloads/phantomjs-2.0.0-macosx/bin/phantomjs");
        driver = new PhantomJSDriver(caps);
Run Code Online (Sandbox Code Playgroud)

上面的这一行似乎不是问题,因为从我的测试中我可以看到像上面这样的多行在遇到上述错误之前执行没有错误.

此外,Session.NegotiatedCapabilities有"acceptSslCerts":false,我无法使用此代码块作为PhantomJS驱动程序初始化程序解决:

Jan 16, 2016 6:23:40 AM org.openqa.selenium.phantomjs.PhantomJSDriverService <init>
INFO: arguments: [--web-security=no, --ignore-ssl-errors=yes, --webdriver=33238, --webdriver-logfile=/Users/richard/YeezyBot/phantomjsdriver.log]
Run Code Online (Sandbox Code Playgroud)

我可以看到参数是在控制台上传递的......

((JavascriptExecutor) driver).executeScript("arguments[0].click();", buttonToClick);
Run Code Online (Sandbox Code Playgroud)

最后,一切都适用于Firefox WebDriver.

javascript java selenium phantomjs ghostdriver

10
推荐指数
1
解决办法
1225
查看次数

在Selenium Grid中注册PhantomJS节点时出错

我有以下问题

  • 我成功推出了Selenium Grid hub:

java -jar selenium-server-standalone-2.53.0.jar -role hub

  • 之后我尝试使用以下命令启动PhantomJS节点:

phantomjs --webdriver=8090 --webdriver-selenium-grid-hub=http://localhost:4444


但得到了错误:

[INFO - 2016-03-25T13:56:28.397Z] GhostDriver -主-端口运行8090 [INFO - 2016-03-25T13:56:28.397Z] GhostDriver -主-注册到硒HUB' 的http://本地主机:4444 '版本:使用'127.0.0.1:8090'与org.openqa.grid.selenium.proxy.DefaultRemoteProxy作为远程代理.[错误- 2016-03-25T13:56:28.400Z] GhostDriver - main.fail - { "线":97, "sourceURL": "phantomjs://platform/hub_register.js", "堆":"寄存器@ phantomjs://platform/hub_register.js:97:79 \nglobal code @ phantomjs://code/main.js:78:37"}

phantomjs://platform/console++.js:263错误

标准节点工作正常,但PhantomJS失败了.我做错了什么?

java selenium-grid phantomjs selenium-webdriver ghostdriver

10
推荐指数
2
解决办法
3927
查看次数

使用Webdriver和PhantomJS记录HTTP流量

如何使用PhantomJS通过Webdriver记录页面加载的所有HTTP请求和响应?我正在使用python,我的超级简单测试脚本如下所示:

from selenium import webdriver

driver = webdriver.PhantomJS()
driver.get('http://www.golem.de')
Run Code Online (Sandbox Code Playgroud)

我已经在PhantomJS中找到了这些功能:

page.onResourceRequested = function (request) {
    console.log('Request ' + JSON.stringify(request, undefined, 4));
};
Run Code Online (Sandbox Code Playgroud)

但我不知道如何将它与Selenium Webdriver和Ghostdriver结合在一起.我怎么能这样做?

python phantomjs selenium-webdriver ghostdriver

9
推荐指数
1
解决办法
2297
查看次数

量角器(Selenium webdriver)VS ghostdriver(phantomjs webdriver)有什么区别?

我想说清楚量角器VS ghostdriver之间的区别.

  1. 用量角器:

    • 启动selenium web服务器进行测试.
    • 多个浏览器测试.
    • 无论何时开始测试,它都会打开浏览器.
  2. 用ghostdriver:

    • 启动phantomjs web服务器.
    • 也可以配置多个浏览器.
    • 可与硒分开或与硒结合.

我的问题是PhantomJS webdriver可以单独运行,不需要selenium webdriver,多个浏览器和CI.为什么我们需要运行selenium并使用ghostdriver将selenium与phantomjs集成?

selenium phantomjs selenium-webdriver ghostdriver protractor

9
推荐指数
1
解决办法
8563
查看次数

Selenium无法连接到GhostDriver(但有时只能)

我用Python和Selenom和PhantomJS设置了一个简单的webscraping脚本.我总共有大约200个URL要刮掉.该脚本运行在第一再细后约20-30网址(也可以是多/少,因为它似乎随机当它失败,并且不涉及任何特定的URL)我收到以下错误蟒蛇:

selenium.common.exceptions.WebDriverException: Message: 'Can not connect to GhostDriver'
Run Code Online (Sandbox Code Playgroud)

还有我的ghostdriver.log:

PhantomJS is launching GhostDriver...
[ERROR - 2014-07-04T17:27:37.519Z] GhostDriver - main.fail - {"message":"Could not start Ghost Driver","line":82,"sourceId":140692115795456,"sourceURL":":/ghostdriver/main.js","stack":"Error: Could not start Ghost Driver\n    at :/ghostdriver/main.js:82","stackArray":[{"sourceURL":":/ghostdriver/main.js","line":82}]}
Run Code Online (Sandbox Code Playgroud)

我搜索了大部分关于SO的问题似乎是他们甚至无法运行单个URL.我发现错误发生在脚本中间的唯一问题就是这个问题,答案是将phantomjs升级到我已经完成的最新版本.另一个答案只是说再次尝试该URL并不是一个好的解决方案,因为URL可能会再次失败.

我在python 2.7.6上的Linux Mint 17上运行了phantomjs版本1.9.7和selenium版本2.42.1

for url in ['example.com/1/', 'example.com/2/', 'example.com/3/', .. , ..]:
    user_agent = 'Chrome'
    dcap = dict(DesiredCapabilities.PHANTOMJS)
    dcap['phantomjs.page.settings.userAgent'] = user_agent
    driver = webdriver.PhantomJS(executable_path='/usr/bin/phantomjs', desired_capabilities=dcap)
    driver.get(url)
Run Code Online (Sandbox Code Playgroud)

python selenium phantomjs ghostdriver

9
推荐指数
1
解决办法
6252
查看次数

需要从selenium服务器转储具有元素id的整个DOM树

我一直在使用python selenium进行Web自动化测试.自动化的关键部分是为HTML页面中的用户可见对象找到正确的元素.以下API大部分时间都可以使用,但不是所有时间都可以.

find_element_by_xxx,  xxx can be id, name, xpath, tag_name etc. 
Run Code Online (Sandbox Code Playgroud)

当HTML页面太复杂时,我想搜索dom树.想知道是否可以要求selenium服务器序列化整个DOM(使用可用于通过webdriver服务器执行操作的元素id).客户端(python脚本)可以使用自己的搜索算法来查找正确的元素.

请注意,python selenium可以获取整个html页面

drv.page_source
Run Code Online (Sandbox Code Playgroud)

但是,解析这不会从selenium服务器的角度给出内部元素id,因此没有用处.

EDIT1:解释 它使它更清晰(感谢@alecxe):这里需要的是在selenium服务器中所有DOM元素(保留其DOM结构)的序列化表示,这个序列化表示可以发送到客户端(一个python selenium测试应用程序),可以自己搜索.

python selenium ghostdriver

9
推荐指数
2
解决办法
2万
查看次数

在后台使用Selenium

我正在使用Selenium和chrome webdriver但是当我运行脚本时它会打开一个窗口.有什么办法可以在没有窗口弹出的情况下访问互联网吗?

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome()

driver.get("https://ps.rsd.edu/public/")
elem = driver.find_element_by_name("account")
elem.send_keys("Username")
elem2 = driver.find_element_by_name("pw")
elem2.send_keys("Password")
elem.send_keys(Keys.RETURN)

driver.quit()
Run Code Online (Sandbox Code Playgroud)

例如,这将进入我学校的成绩网站并输入用户名和密码,但如果可能的话,我希望在没有浏览器弹出的情况下执行此操作.

python selenium phantomjs selenium-webdriver ghostdriver

8
推荐指数
1
解决办法
1万
查看次数