C# 如何使waitForWebPageToLoad在编码ui测试中工作?

C# 如何使waitForWebPageToLoad在编码ui测试中工作?,c#,coded-ui-tests,C#,Coded Ui Tests,首先,我是编码用户界面测试的初学者,代码技能很差,但我正在努力学习 现在我正在visual studio中手工编写一些测试用例(c#)(录制选项对我来说还不够),但我无法让waitForWebPageToLoad正常工作 例如,我点击一个链接,输入一些文本,然后点击一个按钮。之后,我希望代码等待网页加载后再继续。我现在做的是一个线程。睡眠但这不是一个好的解决方案 ClickLink(Repo.Link(Browser)); EnterText(Repo.Field(Browser), "1234

首先,我是编码用户界面测试的初学者,代码技能很差,但我正在努力学习

现在我正在visual studio中手工编写一些测试用例(c#)(录制选项对我来说还不够),但我无法让
waitForWebPageToLoad
正常工作

例如,我点击一个链接,输入一些文本,然后点击一个按钮。之后,我希望代码等待网页加载后再继续。我现在做的是一个
线程。睡眠
但这不是一个好的解决方案

ClickLink(Repo.Link(Browser));
EnterText(Repo.Field(Browser), "12345789");
ClickButton(Repo.LeftButton(Browser));
Thread.Sleep(5000);  //<-------- This must be replaced... :)
以及:
对控件类型调用
waitforcontrol
类方法。控件exist是真的,但这并不意味着控件已经准备好(它可能正在加载)

一般做法是在超级父级上调用waitforcontrolready方法。(比如说浏览器)。我修改了你的方法如下:

 public void WaitForPageToLoad(BrowserWindow browser, int WaitTimeOut)
    {
        // Waiting on all threads enable to wait for any background process to complete
        Playback.PlaybackSettings.WaitForReadyLevel = WaitForReadyLevel.AllThreads;
        // Wait 
        browser.WaitForControlReady(WaitTimeOut * 1000);
        // Revert the playback settings (As waiting on all threads may sometime have a toll on execution speed 
        Playback.PlaybackSettings.WaitForReadyLevel = WaitForReadyLevel.UIThreadOnly;
    }
然后只要调用该方法等待,无论您在哪里加载页面。请记住以秒为单位传递浏览器和超时作为参数。大概

    ClickButton(Repo.LeftButton(Browser));
    WaitForPageLoad(Browser, 120);

希望有帮助

你从哪里得到waitTime=int.Parse(waitTime.ToString()+“000”)从?
waitTime*=1000有什么问题?一位开发人员同事帮助了我,但他现在不在这个项目中,所以我正在努力找出最好的答案,感谢你的帮助!我可能会在本周晚些时候对此进行测试,并向您报告进展情况:)你好,Prageeth Saravann。我已经尝试在我的测试用例中实现并调用您的方法,但它似乎忽略了WaitForPageLoad(Browser,120);打电话,否则可能没用?在您修改的方法中,我在“浏览器”中更改为大写B。你有什么想法或更多的建议来让它工作吗?如果你改变参数。。然后,您也必须在方法内部更改它。(其中有browser.WaitForControlReady(WaitTimeOut*1000);)还有,你调试过代码吗?是的,我现在试着用WaitForPageLoad(browser,120)上的断点进行调试;但是我不确定到底要找什么,这段代码对你有用吗?是的。。代码流是否等待一秒钟左右?还是就这么过去了?到底发生了什么?
 public void WaitForPageToLoad(BrowserWindow browser, int WaitTimeOut)
    {
        // Waiting on all threads enable to wait for any background process to complete
        Playback.PlaybackSettings.WaitForReadyLevel = WaitForReadyLevel.AllThreads;
        // Wait 
        browser.WaitForControlReady(WaitTimeOut * 1000);
        // Revert the playback settings (As waiting on all threads may sometime have a toll on execution speed 
        Playback.PlaybackSettings.WaitForReadyLevel = WaitForReadyLevel.UIThreadOnly;
    }
    ClickButton(Repo.LeftButton(Browser));
    WaitForPageLoad(Browser, 120);