//使用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(){
showTreeTab(3);
if(document.getElementById("appendProdctTreeDiv").loaded == "false“){
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) {
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";
}
}
}
发布于 2010-11-13 21:28:48
我认为你有几个选择等待回应。备选案文1:
首先,
ie.Div("appendProdctTreeDiv").Link(Find.ByText("text of link")).Click();
如果没有,下面是备选案文2:
在触发ajax调用的脚本中的
ie.Div("appendProdctTreeDiv").WaitUntil("loaded",“真”);
赫特·耶伦
发布于 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
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);
https://stackoverflow.com/questions/4153780
复制相似问题