我正在开发一套 Selenium WebDriver(不是 Selenium RC 并且不使用 Selenium-Server)测试,这些测试通过对 MSTest 的命令行调用来执行。我已经将它们分解为我们计划测试的每个浏览器(Chrome、Firefox 和 IE9,目前)的测试类,每个测试类都有一个启动方法,可以登录到被测系统,然后执行请求的测试以及使用 WebDriver.Quit() 关闭浏览器的 TearDown 方法。
在我的开发机器上,一切都很正常,但在我们的构建机器上,类初始化/启动方法可以正常执行并登录到站点,但是一旦第一个实际测试开始,测试运行程序就会关闭并显示错误消息:
OpenQA.Selenium.WebDriverException: Unexpected error. System.Net.WebException: Unable to connect to the remote server ---> System.Net.Sockets.SocketException: No connection could be made because the target machine actively refused it 127.0.0.1:59982
Run Code Online (Sandbox Code Playgroud)
显然,端口会根据正在测试的浏览器而变化;当我运行整个套件时,对于 IE、Firefox 和 Chrome 的测试,我在不同的端口上遇到错误 - 每个浏览器都有两个错误(因为该套件目前对每个浏览器都有两个测试)
构建机器的 Windows 防火墙关闭,并且在运行测试之前检查 netstat 显示端口未使用;如果我调试测试并在启动代码运行之后但在测试运行之前停止,当然端口正在使用中。127.0.0.1 和 localhost 也是一样的。
无论我是通过命令行调用测试,还是使用 VS 测试工具从 Visual Studio 中运行/调试它,或者通过执行我的控制台应用程序(通过 Process.Start() 调用 MSTest),我都会遇到相同的错误。第一次 FindElement() 调用时抛出异常。
我从哪里开始寻找为什么这会在构建机器上而不是在我的开发机器上失败?
我认为这是一种SQL新手问题,但这里有.
我有一个基于示例用户定义函数放在一起的SQL查询(SQL Server 2005):
SELECT
CASEID,
GetNoteText(CASEID)
FROM
(
SELECT
CASEID
FROM
ATTACHMENTS
GROUP BY
CASEID
) i
GO
Run Code Online (Sandbox Code Playgroud)
UDF工作得很好(它连接相关表中多行的数据,如果这很重要)但我对FROM子句后的"i"感到困惑.查询在i中工作正常,但没有它就失败了."我"有什么意义?
编辑:正如乔尔在下面提到的,它不是一个关键词
method_missing的
*obj.method_missing(符号h,args i)→other_obj
当obj被发送一个它无法处理的消息时,由Ruby调用.symbol是被调用方法的符号,args是传递给它的任何参数.下面的示例创建一个类Roman,它响应名称由罗马数字组成的方法,返回相应的整数值.method_missing的更典型用法是实现代理,委托和转发器.
class Roman
def roman_to_int(str)
# ...
end
def method_missing(method_id)
str = method_id.id2name
roman_to_int(str)
end
end
r = Roman.new
r.iv ! 4
r.xxiii ! 23
r.mm ! 2000
Run Code Online (Sandbox Code Playgroud)
我刚刚听说方法缺失,并在Ruby编程中找到了更多信息,但本书引用的上述解释是我的头脑.有没有人有更简单的解释?更具体地说,方法缺失仅由解释器使用,或者是否需要直接在程序中调用它(假设我只是编写Web应用程序,而不是为NASA编写代码)?
我有一个Customer类,它有一个List <string> Roles属性.大部分的时间,我想访问该物业作为一个字符串列表,但有时我想看到它作为一个逗号分隔的列表.
我当然可以在一个新方法中做到这一点,如果我预计想要以不同的格式(逗号分隔,制表符分隔和&ct)获取变量的值,我肯定会这样做.但是,我正在考虑使用两个不同的属性来访问变量值,这有点像
public List<string> Roles
{
get { return this._Roles; }
set { this._Roles = value; }
}
Run Code Online (Sandbox Code Playgroud)
和
public string RolesToString
{
get { do some work here to comma-delimit the list; }
}
Run Code Online (Sandbox Code Playgroud)
基本上我想覆盖此特定列表的ToString()方法.是否有令人信服的理由做一个超过另一个?是否使用两个不同的属性来返回相同的变量值足够非标准以引起红旗?
我们在公司网站上运行ASP.Net 2.0,我希望尽可能顺利地使用ASP.Net 3.5.VS 2005中的项目/解决方案体系结构是ASP.Net 2.0 Web项目和站点代码使用的.Net 2.0数据访问层项目.
在新的VS 2008解决方案中打开项目时,它们似乎转换为.Net 3.5,只需要少量工作 - 它们开箱即用,成功部署,似乎工作得很好,这正如我所期望的那样鉴于.Net 2.0和3.5共享一个共同的运行时.转换后的主要区别是web.config文件引用的dll现在是3.5版本.
我想做的是零碎地更新网站; 当我对给定页面进行修改时,将该页面的3.5版本发送到我们的网络服务器,而不是立即更新整个网站.在我们的开发盒测试中,这种方法似乎工作正常 - 站点代码与.Net 3.5数据访问层交互没有困难,少数页面运行3.5页面后面的代码(我的意思是他们是运行在VS 2008中构建的程序集 - 该站点使用单页程序集来代替后面的代码,3.5 web.config就位,并且该站点的大部分都运行在VS2005中构建的代码隐藏程序集.一切看起来都很棒.
这让我担心我错过了什么.这个架构是否可行,或者是否存在问题等待我没有考虑过?
asp.net visual-studio-2005 .net-3.5 visual-studio-2008 .net-2.0
我只开始玩ASP.Net MVC和新到VS2008动态数据网站模板.我注意到他们都在URL处理中使用路由,并且我理解由于路由,ASP.Net MVC在IIS6下不起作用.但是,我的DynamicData站点在IIS6上工作得很好.
由于IIS7的要求,我不得不暂时放弃对即将到来的项目的ASP.Net MVC的探索,我想知道两者之间的本质区别是什么,即什么使得DynamicData网站在IIS6和MVC不是吗?
asp.net-mvc .net-3.5 asp.net-dynamic-data visual-studio-2008
.net-3.5 ×2
.net-2.0 ×1
asp.net ×1
asp.net-mvc ×1
c# ×1
mstest ×1
properties ×1
ruby ×1
selenium ×1
sql ×1
sql-server ×1
t-sql ×1
webdriver ×1