首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用watin测试Ajax婚恋网站?

如何使用watin测试Ajax婚恋网站?
EN

Stack Overflow用户
提问于 2010-11-11 11:12:14
回答 2查看 2.4K关注 0票数 2

//使用watin测试一些ajax站点,当单击td时,div("appendProdctTreeDiv")将显示一些响应html,但我不知道如何获得这个div并单击我想要的链接;可以通过测试“http://www.google.com/ig”?thanks

IE =新IE();

……

ie.Element(Find.ById("tree")).Click();

textbox1.text=ie.Div("appendProdctTreeDiv").innerHtml;//这种方式是错误的;

..。

..html代码。

<'TD id=tree onclick=showAppendProductTree() noWrap>表1<‘/TD>

……

<'/DIV>

……

函数showAppendProductTree(){

代码语言:javascript
运行
复制
showTreeTab(3);

if(document.getElementById("appendProdctTreeDiv").loaded == "false“){

代码语言:javascript
运行
复制
    var url ="product!changeAppendProduct.do";

var params = "";

var newProductId = document.getElementById("newProductId").value;
    new Ajax.Request(
    url,
    {
        method: 'get',
        parameters: params+"&random="+Math.random(),
        requestHeaders:["Cache-Control","no-cache"],
        onComplete: function(originalRequest){  
        var message = originalRequest.responseText;
        document.getElementById("appendProdctTreeDiv").innerHTML= message;
        document.getElementById("appendProdctTreeDiv").loaded = "true";
                    synAppendTree();
        document.getElementById("waitLoadAppendProd").style.display = "none";
        document.getElementById("searchDiv").style.display = "block";
            }
    });

}

}

函数showTreeTab(tabId) {

代码语言:javascript
运行
复制
document.getElementById("treeDiv").style.display ="block";

for(var i=1;i<=3;i++){

    if(i==tabId){
        document.getElementById("tree"+i).style.display = "block";
    }
    else{
        document.getElementById("tree"+i).style.display = "none";
    }
}

}

EN

回答 2

Stack Overflow用户

发布于 2010-11-13 21:28:48

我认为你有几个选择等待回应。备选案文1:

首先,

  • 默认等待30秒一个元素出现在页面上。因此,如果您知道要单击的链接的id或文本,我希望下面的代码能够工作:

ie.Div("appendProdctTreeDiv").Link(Find.ByText("text of link")).Click();

如果没有,下面是备选案文2:

在触发ajax调用的脚本中的

  • 中,在on完备回调函数中,div的加载属性被设置为true (在包含的html中为false )。您可以在“等待调用”中使用此方法,然后获取innerhtml或单击要单击的链接:

ie.Div("appendProdctTreeDiv").WaitUntil("loaded",“真”);

赫特·耶伦

票数 5
EN

Stack Overflow用户

发布于 2010-11-12 21:52:54

当您获得innerHtml时,异步AJAX调用很可能仍在进行中。

ie.Element(Find.ById("tree")).Click();

textbox1.text=ie.Div("appendProdctTreeDiv").innerHtml;//这样做是错误的;

试着做这样的事情,看看你是否得到了预期的结果。这不是一个很好的方法,但是检查很容易。

ie.Element(Find.ById("tree")).Click();

System.Threading.Thread.Sleep(5000);//等待5秒;如果异步调用所需时间更长,则超过5秒。

textbox1.text=ie.Div("appendProdctTreeDiv").innerHtml;//这样做是错误的;

如果站点使用ASP.NET,要确定页面是否处于异步调用中,可以使用以下javascript。

Sys.WebForms.PageRequestManager.getInstance().get_isInAsyncPostBack()

打电话给我

bool.Parse(ie.Eval("Sys.WebForms.PageRequestManager.getInstance().get_isInAsyncPostBack()"));

bool isInAsync =

但是,google.com/ig使用的是MS AJAX,因此我无法使用上面的javascript提供一个工作示例。

例如使用wait和google.com/ig的翻译小工具。每次运行时,在TypeText中放一个不同的单词,或者清除缓存。ie.GoTo("www.google.com/ig");System.Threading.Thread.Sleep(2000年);//等待页面小工具加载ie.GoTo

代码语言:javascript
运行
复制
        ie.Frame("remote_iframe_10").Form("dictForm").TextField("dictQuery").TypeText("bajar");
        ie.Frame("remote_iframe_10").Form("dictForm").Buttons[0].Click();

        Console.WriteLine(ie.Frame("remote_iframe_10").Div("dict_content").InnerHtml);
        System.Threading.Thread.Sleep(2000);  //Wait for gadget to finish here.
        Console.WriteLine(ie.Frame("remote_iframe_10").Div("dict_content").InnerHtml);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4153780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档