Tag: watin

等待使用WatiN完全加载页面

我有两个与同一问题有关的问题…… Q1 )我正在使用WatiN(3.5)来实现网站的自动化。 情况是我想在结果页面完全加载时获取div标签,但是WatiN不等待该页面被加样,并尝试使用该div来导致div为null。 这个div由AJAX填充。 这是我用来避免该错误的代码,但它不起作用。 while (resultDiv == null) { browser.Div(“ui-tabs-1”).WaitUntilExists(); resultDiv = browser.Div(“ui-tabs-1”); } 那么如何使用WatiN等待页面完全加载? Q2 )我在这里找到了上述问题的解决方案,但我陷入了困境,因为我找不到这些接口的库参考,即IElement和IBrowser 。 这些接口用于扩展方法。 我还询问了那篇文章的作者并等待他的回复。 我正在通过在VS 2010中使用WatiN 2.5和.Net framework 3.5来实现此function。

使用Watin显示IE“另存为”对话框

有没有人这样做过? 导航到网页并弹出另存为对话框? 这样,浏览器就可以处理文件类型,html,pdf等…

WatiN“无法转换COM对象”exception

我的监控应用程序不时会因为没有明显原因而死亡。 似乎“mshtml.HTMLDocument”资源不可用。 其他人经历过类似的事吗? 提前致谢。 错误信息: 14.04.2011 18:26:37 -> Test 1.2 (Subscriber type requests), error: Unable to cast COM object of type ‘System.__ComObject’ to interface type ‘mshtml.HTMLDocument’. This operation failed because the QueryInterface call on the COM component for the interface with IID ‘{3050F55F-98B5-11CF-BB82-00AA00BDCE0B}’ failed due to the following error: No such interface supported (Exception from […]

如何使用watin中的FileUploadDialogHandler访问文件上载对话框

我正在使用带有watin的IE8,我正试图通过我的网页测试上传文件。 我不能简单地使用set方法设置上传文件 ie.FileUpload(Find.ById( “someId”))集( “C:/Desktop/image.jpg”); 因为上传textarea在IE8中不可写,所以我必须使用FileUploadDialogHandler,但我找不到任何如何执行此操作的示例。 我已成功找到并使用了ConfirmDialogHandler的示例,但我似乎无法弄清楚如何使用FileUploadDialogHandler。 任何例子都将非常感谢。

WatiN:在查找文本时,如何获取其包含元素的引用?

给出以下HTML页面: WatiN Test Hello World! 我希望能够搜索一些文本(比如说”World” ),并获得对其父元素的引用(在本例中为 元素)。 如果我试试这个: var element = ie.Element(Find.ByText(t => t.Contains(“World”))) 或这个: var element = ie.Element(e => e.Text != null && e.Text.Contains(“World”)); 我找回了元素。 这与Element.Text的WatiN文档一致,该文档声明: “获取此元素的innertext(以及此元素中包含的所有元素的innertext)”。 由于页面中的所有文本都包含在元素中,因此我将始终将其返回而不是直接父级。 有没有办法直接在元素下面获取文本(而不是它包含的元素中的文本)? 还有另一种方法吗? 非常感谢。

如何使用Watin IE处理Windows安全警报对话框

我正在尝试使用WatIN IE自动化网站。 由于网站在几次请求后禁止了ip。因此,当ip被禁止时,我设置了一个bool ipbanned = true。 在那种情况下,我希望改变IP。 SetProxy方法使用端口成功更改ip地址。 但在下一个要求我得到这个屏幕: – 注意: – 第一个红色条带显示IP地址,第二个红色条带显示服务器名称 如何在程序中设置此对话框中的用户名和密码,以便用户无法看到此框并且设置正确 以下是我使用的代码段: – private void Start_Thread() { Thread pop = new Thread(populate); pop.SetApartmentState(ApartmentState.STA); pop.Start(); } bool ipbanned=false; private void populate() { if(ipbanned) SetProxy(proxies[0]); ///I wish to handle the dialog box here. WatiN.Core.Settings.MakeNewIeInstanceVisible = false; WatiN.Core.Settings.Instance.AutoMoveMousePointerToTopLeft = false; using (IE browser = new […]

使用c#在IE 11中自动下载文件

我正在尝试获取窗口处理程序并按“保存”按钮。 我在IE8和9上找到了几个例子。但是这个代码在IE 11上不起作用。 const int BM_CLICK = 0x00F5; [DllImport(“user32.dll”, SetLastError = true)] static extern IntPtr FindWindow(string lpClassName, string lpWindowName); [DllImport(“user32.dll”)] [return: MarshalAs(UnmanagedType.Bool)] static extern bool SetForegroundWindow(IntPtr hWnd); [DllImport(“user32.dll”, SetLastError = true)] static extern IntPtr SetActiveWindow(IntPtr hWnd); [DllImport(“user32.dll”, CharSet = CharSet.Auto)] public static extern IntPtr FindWindowEx(IntPtr parent, IntPtr next, string sClassName, IntPtr sWindowTitle); [DllImport(“user32.dll”, SetLastError = […]

如何使用具有特定HTTP引用和查询字符串的WatiN来模拟http请求?

当我使用WatiN转到特定网页时,如何使用查询字符串伪造HTTP引用者 (即请求来自谷歌搜索,查询字符串q = search_term)? 因此,我可以validation响应标头是否具有针对特定引荐来源url的301重定向。 我可能需要使用FiddlerCore来扮演中间人来设置自定义引荐来源,但我还不确定如何做到这一点。 我在C#中使用ASP.NET。 谢谢! //WatiN Browser.GoTo(url);

访问Watin新版本2.1中的帧时出错

访问新版本ie.Frames 2.1中的ie.Frames时会抛出以下错误 错误详细信息: 无法使用已与其基础RCW分离的COM对象。 System.Runtime.InteropServices.InvalidComObjectException: COM object that has been separated from its underlying RCW cannot be used. at System.StubHelpers.StubHelpers.GetCOMIPFromRCW(Object objSrc, IntPtr pCPCMD, Boolean& pfNeedsRelease) at mshtml.HTMLFrameElementClass.IHTMLElement_get_tagName() at WatiN.Core.Native.InternetExplorer.IEElement.get_TagName() at WatiN.Core.ElementTag.FromNativeElement(INativeElement nativeElement) at WatiN.Core.StaticElementFinder.CreateTagList(INativeElement nativeElement) at WatiN.Core.StaticElementFinder..ctor(DomContainer domcontainer, INativeElement nativeElement) at WatiN.Core.Element.InitElement(DomContainer domContainer, INativeElement nativeElement, ElementFinder elementFinder) at WatiN.Core.Element..ctor(DomContainer domContainer, INativeElement nativeElement) at WatiN.Core.Frame..ctor(DomContainer domContainer, […]

滚动时通过线程更新DataGridView

我遇到了我的这个问题,如果有人解决了这个问题,那将会很有帮助 我的问题 我想做的是: 1)在表单加载事件中初始化DataTable数据表并将其defaultview分配给a datagridview dgvresult 2)点击一个按钮启动一个STA线程(我实际上正在使用WatIN IE,因此 需要使线程STA)调用一个创建相同DataTable的方法 dt作为在步骤1中创建的数据表,然后向此数据表添加300行。 3)调用一个委托,它将这个dt与datatable合并,从而更新dgvresult这里是我的问题: 这是我刚才描述的步骤的代码片段: static class Program { /// /// The main entry point for the application.This method is made STAThread as I need to intialize WatIN IE in the form load of frmMain /// [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new frmMain()); } } /// […]