在编码的ui中,如何在浏览器中正确检索包含嵌入式Adobe PDF阅读器的浏览器窗口

时间:2015-03-26 15:50:13

标签: c# multithreading coded-ui-tests

当我正在调试或运行我的编码UI自动化项目时遇到了这个问题,我得到了标记为“{”的异常,该对象已经与其底层RCW分离,无法使用。“System.Exception {System.Runtime.InteropServices.InvalidComObjectException}“每次来自浏览器窗口,其中包含嵌入的pdf阅读器。每次我检索窗口并尝试单击返回时都会发生这种情况。当我对它执行back方法时它会barfs。我尝试了不同的东西,但没有一个工作,包括播放等待。

var hereIsmypdf = ReturnPDFDoc();

   public BrowserWindow ReturnPDFDoc()
    {
        Playback.Wait(1000);

        var myPdFdoc = GlobalVariables.Browser;      

        return myPdFdoc;
    } 

hereIsmypdf.Back();

1 个答案:

答案 0 :(得分:0)

我能解决这个问题的唯一方法就是不使用BrowserWindow类。我最终使用WinWindow类,只是从它获取窗口的选项卡。 BrowserWindow类似乎触发了异常"已经与其底层RCW分离的COM对象无法使用。" System.Exception {System.Runtime.InteropServices.InvalidComObjectException}"每当我试图找回它。我希望这有助于某人或某人有更好的方法来处理这个问题。

对于投票我的问题的人,我确实试图弄明白。对不起,我不清楚我在问社区是什么,或者无法正确表达这种痛苦。我确定有人可能正在经历同样的痛苦,并且很难说明最新情况。

这是关于我最终做什么的代码

public WinTabPage ReturnPDFDoc()
    {
        WinWindow Wnd = new WinWindow();
        Wnd.SearchProperties[BrowserWindow.PropertyNames.ClassName] = "IEFrame";

        WinTabList tabRoWlist = new WinTabList(Wnd);
         tabRoWlist.SearchProperties[WinTabPage.PropertyNames.Name] = "Tab Row";

        WinTabPage myTab = new WinTabPage(tabRoWlist);
        myTab.SearchConfigurations.Add(SearchConfiguration.AlwaysSearch);
        myTab.SearchProperties[WinTabPage.PropertyNames.Name] = "something";
        //UITestControlCollection windows = newWin.FindMatchingControls();


        return myTab;
    }