如何通过onTouch事件在CrossWalkView(WebView)中打开的HTML页面中确定元素的XPATH?如何从html页面获取xPath(WebView)
0
A
回答
0
在您的webview组件上设置WebViewClient。
browser = (WebView) findViewById(R.id.browser);
browser.setWebViewClient(new InnerWebViewClient());
然后延伸WebViewClient类
private class InnerWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return super.shouldOverrideUrlLoading(view, url);
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
}
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
}
}
在这里,您将得到URL作为字符串格式。 Webivew的onTouch事件将首先执行onPageStarted()方法。所以你会得到你的路径网址。
0
问题通过使用JS解决。 JS的解决方案我来到这里: I'm storing click coordinates in my db and then reloading them later and showing them on the site where the click happened, how do I make sure it loads in the same place?
InputStream is = getResources().openRawResource(R.raw.get_xpath);
Scanner s = new Scanner(is).useDelimiter("\\A");
String javascript = s.hasNext() ? s.next() : "";
myWebView.evaluateJavascript(javascript, null);
和here`s我的JS代码:
document.onclick= function(event) {
if (event===undefined) event= window.event; // IE hack
var target= 'target' in event? event.target : event.srcElement; // another IE hack
var root= document.compatMode==='CSS1Compat'? document.documentElement : document.body;
var mxy= [event.clientX+root.scrollLeft, event.clientY+root.scrollTop];
var path= getPathTo(target);
var txy= getPageXY(target);
alert('Clicked element '+path+' offset '+(mxy[0]-txy[0])+', '+(mxy[1]-txy[1]));
}
function getPathTo(element) {
if (element.id!=='')
return 'id("'+element.id+'")';
if (element===document.body)
return element.tagName;
var ix= 0;
var siblings= element.parentNode.childNodes;
for (var i= 0; i<siblings.length; i++) {
var sibling= siblings[i];
if (sibling===element)
return getPathTo(element.parentNode)+'/'+element.tagName+'['+(ix+1)+']';
if (sibling.nodeType===1 && sibling.tagName===element.tagName)
ix++;
}
}
function getPageXY(element) {
var x= 0, y= 0;
while (element) {
x+= element.offsetLeft;
y+= element.offsetTop;
element= element.offsetParent;
}
return [x, y];
}
相关问题
- 1. 如何在android webview中获取html页面的结尾
- 2. 从WebView获取当前页面的URL
- 3. 使用XPath从html页面获取标题标记?
- 4. 我如何从WebView获取页面源代码?
- 5. 如何从HTML页面源获取特定的html div标签?
- 6. 如何获取html页面的标题
- 7. 如何在httpmodule中获取页面html?
- 8. 如何获取当前页面的html?
- 9. 如何从html页面获得pdf
- 10. 从html页面获取URL - objective
- 11. 从登录后的页面获取HTML
- 12. Clojure从网站获取html页面
- 13. 从iframe中的页面获取HTML
- 14. 从html页面获取文本shell
- 15. 如何从html页面提取文本?
- 16. 如何从HTML页面提取链接?
- 17. PHP:使用xpath()获取html页面中的内容
- 18. 如何获取无效html的xpath?
- 19. 如何获取将在webview中加载的页面的HTML代码?
- 20. 如何发送值从android到webview中的一个html页面
- 21. 如何从android webview传递对象到C#加载HTML页面
- 22. 如何从网页获取html代码?
- 23. 如何从Bada的网页获取HTML?
- 24. Android WebView:从网站获取html div
- 25. 从webView获取HTML源代码
- 26. 如何使用jQuery或JavaScript从html页面获取SVG代码?
- 27. 如何从页面获取HTML源代码?
- 28. PHP:如何从HTML页面获取基本URL
- 29. 如何从HTML页面获取图片Android studio
- 30. 如何从Servlet中获取参数到Html页面?