我正在使用CEF和CefSharp。 我有一个c#类,其目的是知道JS函数调用是否已完成,然后再次在curent元素xPath上调用JS
class test {
//array of Xpaths of elements
elementsXpaths
public IsDone(){
LoadNext()
}
LoadNext(){
call = string.Format("click('{0}')", elemenentsXpath[next])
browser.ExecuteScriptAsync(call)
}
}
那么JS就是这样的
function click(xpath){
elementFoundedByXPath.click()
elementFoundedByXPath.style.backgroundColor = "#FF0000"
test.isDone();
}
我的问题是,点击()后不会立即更改背景颜色。 所以例如我有一个元素,点击这个元素揭示一些其他元素(我点击显示登录按钮,点击后显示登录和密码输入)然后点击不失败,但我看不到登录名和密码输入。很奇怪。我猜这会失败,因为元素没有建立(我在JS中检查这个)。
我也在调试中检查这个,当我在LoadNext上有断点时,我可以看到调用LoadNext并且前一个元素的backgroundColor没有改变。
我认为如果我单击该元素,我可以确定实际执行了点击。
这是JS异步调用的问题吗? EvaluateScriptAsync()会帮助我吗?在那种情况下,有人向我展示了这两个函数之间的一些简单示例和区别吗?或者问题最有可能发生在其他地方?