如何安装selenium的webdriver-webdriver

selenium 装了用不了,崩溃啊!【python吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:174,786贴子:
selenium 装了用不了,崩溃啊!收藏
我在python3.4下装好selenium3.0, 运行以下代码测试from selenium import webdriverdriver = webdriver.Firefox() driver.get('') 结果报错如下:&&& Traceback (most recent call last):File &F:\爬虫\esuppliersindia\test.py&, line 1, in &module&from selenium import webdriverFile &C:\Python34\lib\site-packages\selenium-3.0.0b2-py3.4.egg\selenium\webdriver\__init__.py&, line 25, in &module&from .safari.webdriver import WebDriver as Safari # noqaFile &C:\Python34\lib\site-packages\selenium-3.0.0b2-py3.4.egg\selenium\webdriver\safari\webdriver.py&, line 49executable_path = os.environ.get(&SELENIUM_SERVER_JAR&)^TabError: inconsistent use of tabs and spaces in indentation&&& 我查了...\safari\webdriver.py文件,看到这样的代码if not executable_path is None:executable_path = os.environ.get(&SELENIUM_SERVER_JAR&)self.service = Service(executable_path, port=port, quiet=quiet,use_legacy=use_legacy_driver)self.service.start()联想到py3要求tab和space不能混用,于是我吧 executable_path之前的空格删掉,再打8个空格,这样又报错:executable_path = os.environ.get(&SELENIUM_SERVER_JAR&)^IndentationError: expected an indented block于是我把 if not executable_path is None: 下的3句缩进,就是这样,if not executable_path is None:executable_path = os.environ.get(&SELENIUM_SERVER_JAR&)self.service = Service(executable_path, port=port, quiet=quiet, use_legacy=use_legacy_driver)self.service.start()这下问题更大了,报错如下:&&& Traceback (most recent call last):File &C:\Python34\lib\site-packages\selenium-3.0.0b2-py3.4.egg\selenium\webdriver\common\service.py&, line 64, in startstdout=self.log_file, stderr=self.log_file)File &C:\Python34\lib\subprocess.py&, line 859, in __init__restore_signals, start_new_session)File &C:\Python34\lib\subprocess.py&, line 1112, in _execute_childstartupinfo)FileNotFoundError: [WinError 2] 系统找不到指定的文件。During handling of the above exception, another exception occurred:Traceback (most recent call last):File &F:\爬虫\esuppliersindia\test.py&, line 2, in &module&driver = webdriver.Firefox()File &C:\Python34\lib\site-packages\selenium-3.0.0b2-py3.4.egg\selenium\webdriver\firefox\webdriver.py&, line 65, in __init__self.service.start()File &C:\Python34\lib\site-packages\selenium-3.0.0b2-py3.4.egg\selenium\webdriver\common\service.py&, line 71, in startos.path.basename(self.path), self.start_error_message)selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH. &&& 这下我是真没辙了,各位大神有没有遇到同样的问题呢?请教。
遇到同问啊啊啊啊
好难过啊 没人解决
Q:提示这个 executable_path = os.environ.get(&SELENIUM_SERVER_JAR&)A:..\selenium\webdriver\safari\webdriver.py,根据错误提示进入 selenium 安装目录,定位到这一行(executable_path = os.environ.get(&SELENIUM_SERVER_JAR&)),然后输入 4 个空格,或者一个tab(前提是,tab是空格表示的。)
Q:selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH. A:搜索 geckodriver,然后下载系统对应的 Firefox 驱动,截止到发帖时间,gecko driver 驱动文件为(geckodriver-v0.10.0-win64.zip),解压后得到驱动 geckodriver.exe。推荐将 geckodriver.exe 放到安装的 Firefox 目录下,然后在系统 环境变量 中,配置驱动的 Path。然后进行测试即可。
请问为啥每次运行一下selenium,就有一个geckodriver进程启动,关闭firefox浏览器后,geckodriver进程仍贮存在内存中(通过任务管理器查看到),无法自动关闭呢?
楼主解决了吗?
登录百度帐号selenium webdriver 无法添加cookie
org.openqa.selenium.WebDriverException: &unknown&: Failed to set the 'cookie' property on 'Document': Cookies are disabled inside 'data:' URLs.
& (Session info: chrome=46.0.2490.71)
& (Driver info: chromedriver=2.9.248304,platform=Linux 3.19.0-31-generic x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 36 milliseconds
Build info: version: '2.41.0', revision: 'cba23c58', time: ' 11:29:39'
System info: host: 'yuloreBJO-107', ip: '127.0.1.1', os.name: 'Linux', os.arch: 'amd64', os.version: '3.19.0-31-generic', java.version: '1.8.0_60'
Driver info: org.openqa.selenium.chrome.ChromeDriver
Capabilities [{applicationCacheEnabled=false, rotatable=false, chrome={userDataDir=/tmp/.com.google.Chrome.Pj5sWq}, takesHeapSnapshot=true, databaseEnabled=false, handlesAlerts=true, version=46.0.2490.71, platform=LINUX, browserConnectionEnabled=false, nativeEvents=true, acceptSslCerts=true, locationContextEnabled=true, webStorageEnabled=true, browserName=chrome, takesScreenshot=true, javascriptEnabled=true, cssSelectorsEnabled=true}]
Session ID: 429c154dbbcb489ffe3df2
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:193)
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:145)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:595)
at org.openqa.selenium.remote.RemoteWebDriver$RemoteWebDriverOptions.addCookie(RemoteWebDriver.java:669)
at mgmt.tests.pages.Driver.driver(Driver.java:30)
at mgmt.tests.pages.Mgmt.&init&(Mgmt.java:14)
at mgmt.tests.testcases.BusinessPageTest.setUp(BusinessPageTest.java:27)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:85)
at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:510)
at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:211)
at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:138)
at org.testng.TestRunner.beforeRun(TestRunner.java:647)
at org.testng.TestRunner.run(TestRunner.java:615)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:359)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:354)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:312)
at org.testng.SuiteRunner.run(SuiteRunner.java:261)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1185)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1110)
at org.testng.TestNG.run(TestNG.java:1018)
at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:112)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:205)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:176)查看: 41|回复: 0
Selenium WebDriver 详细介绍
该用户从未签到
发表于 前天&14:30
这篇主要介绍Selenium WebDriver详细的工作过程,介绍到通信层,Browser Driver的工作原理不去做深入探究。
从上一篇的一个自动化脚本实例开始:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome()
driver.get(&http://www.python.org&)
assert &Python& in driver.title
elem = driver.find_element_by_name(&q&)
elem.send_keys(&pycon&)
elem.send_keys(Keys.RETURN)
assert &No result found.& not in driver.page_source
driver.close()
这个脚本模拟的用户操作,在上一篇中已经介绍过了,这里不再赘述。
自动化脚本中的每一个Selenium Command都会创建一个带有Path的HTTP request。
当自动化脚本执行的时候,第一个HTTP request会创建一个新的Session,接下来对浏览器的操作将通过这个
Session来执行。
创建的Session ID将用于标识后续的自动化脚本都在同一个Session中执行。
创建一个新的Session
HTTP Method& & & & URI Template
POST& & & & /session
一个自定义的session的配置对象
一个默认的session的配置对象
一个描述当前session配置的对象
下面通过几个具体的例子介绍HTTP request的具体内容:
HTTP request类型
HTTP request的类型是GET或者POST
GET request
通常是一些查询命令,用于获取页面中Web元素的信息,例如:
get_attribute(name)
is_displayed()
is_selected()
以检查一个元素是否已在当前页面中加载成功 —— is_displayed()为例
HTTP Method& & & & URI Template
GET& & & & /session/{session id}/element/{id}/displayed
{session id} :Session ID 用于标识接收这条命令的Session
{id}:元素的id,标识执行这条命令的元素
boolean类型,加载成功返回true,加载失败返回false
POST request
通常是一些操作命令,用于Web元素的交互操作,例如:
find_element_by_id(id)
find_elements_by_id(id)
以点击一个元素 —— element.click()为例
HTTP Method& & & & URI Template
POST& & & & /session/{session id}/element/{id}/click
{session id} :Session ID 用于标识接收这条命令的Session
{id}:元素的id,标识执行这条命令的元素
元素对应的JSON对象
HTTP request参数
URI参数(上述例子中已经提到过)
{session id} :Session ID 用于标识接收这条命令的Session
{id}:元素的id,标识执行这条命令的元素
这里说明下JSON参数,以获取一个元素为例 —— find_element
HTTP Method& & & & URI Template
POST& & & & /session/{session id}/element
这里有URL参数{session id}
JSON参数:
using - {string} 定位策略
value - {stirng} 对应的目标值
一个使用XPath策略获取元素的python脚本写法:
login_form = driver.find_element_by_xpath(&//form[@id='loginForm']&)
可用的策略有:
State& & & & Keyword
CSS selector& & & & &css selector&
Link text selector& & & & &link text&
Partial link text selector& & & & &partial link text&
XPath& & & & &xpath&
HTTP request返回值
一个普通值类型
一个JSON对象
普通值类型
以获取当前页面的标题 —— driver.title为例
HTTP Method& & & & URI Template
POST& & & & /session/{session id}/title
返回值是:一个{string} —— 当前页面的Title属性的值
以上述的获取一个元素 —— find_element为例
返回值是:目标位置的一个WebElement JSON对象
【Browser Driver】
Browser Driver一般是一个EXE(可执行)程序,或者浏览器的扩展程序,它使用HTTP Server持续监听
Selenium2 Commands
其功能有:
从客户端(执行自动化脚本的计算机)接收HTTP request
确定Selenium Commands对应的用户操作
发送操作信息到浏览器
获取浏览器返回的执行状态信息
发送执行状态信息到客户端
这里说明下“Selenium Commands对应的用户操作”具体的内容,以driver.title(获取页面标题)为例:
HTTP Method& & & & URI Template
POST& & & & /session/{session id}/title
返回的是页面Document的top-level browsing context的title,等同于调用window.top.document.title。
这个过程中Remote End(Driver的Server)对HTTP request做出响应的执行步骤是:
如果当前的top-level browsing context是未打开状态,返回相应的错误代码和错误信息
处理用户提示,如果是一个错误提示,则返回它的提示内容
将当前top-level browsing context中激活状态页面的Title值赋值给title
将数据处理成JSON对象
将title的值赋给“value”
返回执行成功标志和数据
站长推荐 /4
小伙伴们踊跃闯关,赢取测试积点,换取豪礼,还等什么,赶快行动吧~
了解自己的心里圈,学习不同的内容,让自己由内而外强大起来!
【活动时间】:每个工作日的周一至周五(AM:10:00~PM:5:00)
人人称道的大数据,云计算,虚拟化是什么?该怎么学?——《Docker入门与应用实战》
4.16开启直播授课,好评率100%的大咖手把手教你Docker容器的搭建与应用,利用虚拟化解决测试环境问题!
Powered by8被浏览1,116分享邀请回答0添加评论分享收藏感谢收起Node.js selenium-webdriver
Node.js selenium-webdriver
6.5. Node.js selenium-webdriver
6.5.1. 安装测试环境
6.5.1.1. Selenium Server
下载 Selenium Serverhttp://selenium-release.
6.5.1.1. Selenium Server
下载 Selenium Server
启动 Selenium Server
java -jar selenium-server-standalone-2.40.0.jar
6.5.1.2. 安装 selenium-webdriver
CentOS 6.5
# yum install nodejs npm
# npm -g install selenium-webdriver
默认node_modules安装在 /usr/lib/node_modules/selenium-webdriver
Ubuntu 13.04
sudo apt-get install nodejs
sudo apt-get install npm
sudo npm -g install selenium-webdriver
默认node_modules安装在 /usr/local/lib/node_modules/selenium-webdriver
不是用-g参数npm install selenium-webdriver 将会安装在当前目录下
6.5.1.3. 浏览器相关设置
远程控制Chrome参考
下载后解压运行里面的可执行文件
var driver = new webdriver.Builder().usingServer('http://192.168.6.20:9515/').withCapabilities(webdriver.Capabilities.chrome()).build();
Firefox 使用
var driver = new webdriver.Builder().usingServer('http://192.168.6.20:4444/wd/hub').withCapabilities(webdriver.Capabilities.firefox()).build();
selenium-webdriver 本地测试
selenium-server-standalone 与 测试脚本在同一台机器上
var webdriver = require('selenium-webdriver');
var driver = new webdriver.Builder().
withCapabilities(webdriver.Capabilities.chrome()).
driver.get('http://www.google.com');
driver.findElement(webdriver.By.name('q')).sendKeys('webdriver');
driver.findElement(webdriver.By.name('btnK')).click();
driver.wait(function() {
return driver.getTitle().then(function(title) {
return title === 'webdriver - Google Search';
driver.quit();
例 6.4. NODE.JS selenium-webdriver 远程测试
从一台测试机遥控另台selenium-server-standalone
var webdriver = require('/usr/local/lib/node_modules/selenium-webdriver');
var builder = new webdriver.Builder().
usingServer('http://192.168.6.20:4444/wd/hub').
withCapabilities(webdriver.Capabilities.firefox());
var driver = builder.build();
driver.get('http://www.google.com');
driver.findElement(webdriver.By.name('q')).sendKeys('webdriver');
driver.findElement(webdriver.By.name('btnK')).click();
driver.wait(function() {
return driver.getTitle().then(function(title) {
return title === 'webdriver - Google Search';
driver.quit();
安装 mocha
npm install -g mocha
var assert = require('assert'),
test = require('selenium-webdriver/testing'),
webdriver = require('selenium-webdriver');
test.describe('Google Search', function() {
test.it('should work', function() {
//var driver = new webdriver.Builder().withCapabilities(webdriver.Capabilities.chrome()).build();
var driver = new webdriver.Builder().usingServer('http://192.168.6.20:4444/wd/hub').withCapabilities(webdriver.Capabilities.firefox()).build();
driver.get('http://www.google.com');
var searchBox = driver.findElement(webdriver.By.name('q'));
searchBox.sendKeys('simple programmer');
searchBox.getAttribute('value').then(function(value) {
assert.equal(value, 'simple programmer');
driver.quit();
运行测试程序
# mocha mocha.js
1 passing (10s)
测试成功返回1 passing (10s)
用云栖社区APP,舒服~
【云栖快讯】直播推荐——现在报名3月12日编程语言系列讲座,与行业资深专家一起学习Python、C++、JavaScript、Java!还可在活动页面领取红包,百分百中奖哦!&&
为您提供简单高效、处理能力可弹性伸缩的计算服务,帮助您快速构建更稳定、安全的应用,提升运维效...
RDS是一种稳定可靠、可弹性伸缩的在线数据库服务。支持MySQL、SQL Server、Po...

我要回帖

更多关于 selenium webdriver包 的文章

 

随机推荐