上下文:
我们的一些用户在我们的Web应用程序中报告了文件上载功能的问题.它只是偶尔发生,没有任何特殊模式.我们一直试图弄清楚它,在我们认为可能有用的任何地方添加调试信息,爬行日志等,但我们无法重现或弄清楚它.
问题:
我现在正试图通过使用MSTest和WatiN来重现这个应该重复失败很多次(几百次)的操作.只是想知道测试循环中有多远,我想打印如下:
Console.WriteLine(String.Format("Uploaded file, attempt {0} of {1}", i, maxUploads));
Run Code Online (Sandbox Code Playgroud)
但是,这不会出现在"输出"窗口中.现在我知道您将在测试结果中获得控制台输出(以及您从其中输出的内容Debug.Writeline),但是在测试完成之后才能使用.由于我的测试有数百次重复可能需要一段时间,所以我想知道它已经走了多远.
问题:在测试执行期间,
我是否可以在"输出"窗口中获取控制台输出?
我收到以下WatiN错误:
未处理的异常:System.IO.FileLoadException:无法加载文件或组装'Interop.SHDocVw,Version = 1.1.0.0,Culture = neutral,PublicKeyToken = db7cfd3acb5 ad44e'或其依赖项之一.定位的程序集的清单定义与程序集引用不匹配.(来自HRESULT的异常:0x80131040)文件名:'Interop.SHDocVw,Version = 1.1.0.0,Culture = neutral,PublicKeyToken = db
我将shdocvw.dll从System32复制到bin目录,但它仍然给我同样的问题.
我刚刚开始运行WatIn测试时收到以下错误.
System.IO.FileNotFoundException:无法加载文件或程序集'Interop.SHDocVw,Version = 1.1.0.0,Culture = neutral,PublicKeyToken = db7cfd3acb5ad44e'或其依赖项之一.该系统找不到指定的文件.
我在网上搜索并尝试了以下解决方案,但都没有.
有人可以帮忙吗?
我从C#windows服务调用WatiN.当我调用WatiN时,它会抛出以下异常.CurrentThread需要将它的ApartmentState设置为ApartmentState.STA才能自动化Internet Explorer
我尝试启动一个线程并通过设置公寓状态
mythread.SetApartmentState(ApartmentState.STA)
Run Code Online (Sandbox Code Playgroud)
但这导致了另一个错误
无法计算表达式,因为代码已优化或本机帧位于调用堆栈之上.
我还尝试在Service入口点添加一个属性.
static class Program
{
[STAThread]
static void Main()
{
...
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我有一个选择框
<select id="myselectbox">
<option value='a'>First option</option>
<option value='b'>Second option</option>
</select>
Run Code Online (Sandbox Code Playgroud)
和jquery
$('#myselectbox').change(function() {
...
});
Run Code Online (Sandbox Code Playgroud)
还有一个WatiN测试
SelectList list = Browser.SelectList(Find.ById("myselectbox"));
list.Select("First option");
Run Code Online (Sandbox Code Playgroud)
在IE中,这会更改选择框,但不会触发jquery事件处理程序.我知道围绕IE中的change()事件处理程序的许多问题.所以我尝试在测试中添加一些东西来强制事件发生:
list.Blur();
list.Keypress('\r');
list.Click();
Run Code Online (Sandbox Code Playgroud)
我还尝试在选择框外面单击以移除焦点,希望这会触发事件.
有任何想法吗?
我的问题是我无法通过简单的WatiN测试来可靠地运行我的运行Windows Server 2008和IE8的开发机器.
我已经看到了几个好帖子,但我仍然遇到问题.以下是帖子:
第一篇文章中的步骤似乎有帮助(在我的hosts文件中注释掉":: 1",将我的站点放在可信站点中,并确保我的app.config有"STA"并设置为"copy if"更新",但他们没有帮助可靠.我尝试了第二个例子中的代码,希望它会有所帮助,但事实并非如此.我使用的是WatiN 2.0版beta 1.
我的NUnit代码如下所示:
protected Browser Browser { get; set; }
[TestFixtureSetUp]
public void SetupPriorToTestsInThisFixture()
{
Browser = new IE();
Browser.GoTo(Constants.SiteCollectionUrl);
}
[TestFixtureTearDown]
public void TearDownAfterTestsInThisFixture()
{
if (Browser != null)
{
Browser.Dispose();
}
}
[Test]
public void WaterThroughThePipes()
{
Link link = Browser.Link(Find.ByText("Calendar"));
bool exists = link.Exists;
Assert.That(exists, Is.True, "Could not find 'Calendar' link.");
}
Run Code Online (Sandbox Code Playgroud)
我所看到的是,有时(虽然很少)我的测试通过了.有时断言失败(exists = false),有时我在尝试打开浏览器时会出现超时,有时我在尝试访问link.Exists时出错.
访问link.Exists的错误如下所示:
MyFixture.WaterThroughThePipes:System.Runtime.InteropServices.COMException:接口未知.(HRESULT异常:0x800706B5)
我现在似乎无法重现超时错误,因此我暂时无法提供(尽管这种情况一直都在发生).
在调试模式下运行时,我倾向于看到不同的结果,而不是在调试模式下运行.
对于它的价值,Firefox 3.0.6从未为我工作过.我喜欢它,但需要IE无论如何工作.这是我在Firefox中遇到的错误.
MyFixture(TestFixtureSetUp):WatiN.Core.Native.Mozilla.FireFoxException:无法连接到jssh服务器,请确保你已经正确安装了jssh.xpi插件----> System.Net.Sockets.SocketException:没有连接可以因为目标机器主动拒绝它127.0.0.1:9997
有任何想法吗?我真的不想回到Selenium(去那里,那样做),但我可能不得不这样做.
我正在尝试通过TeamCity运行一个简单的Watin测试,但Internet Explorer窗口永远不会显示,因为通常是通过CruiseControl.
我收到一个错误,它无法找到文本字段,因此正在运行.但是我看不到没有窗户的东西.
是否需要对TeamCity服务器的设置进行特定更改?
我正在使用WATin IE组件浏览特定网站On StartBrowsing按钮点击事件我正在初始化WatiN.Core.IE的对象并传递网站URL以打开网站,如下面的代码片段所示: -
WatiN.Core.IE ie;
private void btnStartBrowsing_Click(object sender, EventArgs e)
{
ie = new IE(URLs.mainURL);
}
Run Code Online (Sandbox Code Playgroud)
有时或者说我应该说5/10次我收到此错误: - "Internet Explorer忙时超时"
如何解决这个问题?