마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드에 자바스크립 클릭이요.

0 추천

정말 3일째 너무 삽질중이라 ㅜㅜㅜ 흐름도를 좀 자세히 알려주실분 있나요 ㅜㅜ 당연 자바스크립트부터 공부해야되는게

맞지만... 고수님들께 질문 좀 드릴께요... 이 부분은 정말 해결이 안되서..

전 지금 url 하나를 로드 시키고 그 페이지 로드가 다 되면 버튼 클릭을 해주고 싶습니다 

소스는 이렇습니다 

webview.loadUrl("http://m.naver.com"); 

예를 들어 그냥 네이버를 로드 해온다고 했을때

webview.setWebViewClient(new WebViewClient() {
public void onPageFinished(WebView view, String url) { // url 로드 끝나면 시작
 
view.loadUrl("javascript:document.getElementsByTagName('a').click();");
 
}
});
위 처럼 하면 네이버의 첫번째 a 태그값이 클릭이 되는게 맞나요 
 
그럼 만약 a 태그가 1개가 아니라 100개정도가 있다 하면 먼저 a를 찾아야 하는데
그럼 그 가운데 45번째에 내가 원하는 클릭값이 있다 하면 어떻게 해야하는지..
 
이게 너무 삽질 같으면 Elements 를 찾아서 하는 방법이 있을텐데
Elements elements = doc.select("div.u_skip"); 
이런식으로  가져왔다고 할때 elements  안에는
 
<a href="url" onclick="return goOtherCR(this,'a=' + fusion_area[0] + '.more2&amp;r=&amp;i=&amp;u='+urlencode(this.href));" class="more">버튼</a>
 
이런식으로 값이 있다 했을때 이 이후 부터 어떻게 해야 하는지 너무 막연합니다... 
제발 도와주세요ㅠㅜㅠ 혼자 해보려고 했는데 도저히 모르겠어요...

 

숀화이트 (3,310 포인트) 님이 2014년 8월 11일 질문
숀화이트님이 2014년 8월 11일 수정

3개의 답변

0 추천

getElementsByTagName 함수는 엘리먼트가 아니라 엘리먼트 배열을 반환해요.

getElementsByTagName('a')[44] 이런식으로 접근하시면 됩니다.

아래 질문의 경우 엘리먼트의 onclick을 실행하고 싶으신거면 

if (typeof elem.onclick == "function") {
    elem.onclick.apply(elem);
}

이런 식의 스크립트로 실행할 수 있습니다.

b22n (22,940 포인트) 님이 2014년 8월 11일 답변
흠... elem 은 갑자기 어디서 나온거죠.... 죄송해요.. 아예 몰라요... ㅠㅠ
위에 제가 코드 올려놓은걸 기준으로 설명 좀 부탁드려도 될까요 ...
javascript:document.getElementsByTagName("a")[44].click() 이런식으로 해보세요
제가 해놓은거랑 다른게 없눈디 ....
0 추천
webview.loadUrl("http://m.naver.com");
 
webview.getSettings().setJavaScriptEnabled(true);   // 자바스크립 사용
webview.setWebViewClient(new WebViewClient() {
public void onPageFinished(WebView view, String url) {  // url 로드시 시작
view.loadUrl("javascript:document.getElementsByTagName('a')[6].click()");
}
});
 
현재 연습용으로 코드를 이렇게 했습니다 만약 그럼 저 코드대로라면 a 의 5번째 태그로 클릭되어 들어가져야 하는게
맞는거죠 ?! 아님 제가 생각을 잘못 하고 있는건가요 ?! 만약 5번째 a 태그에 기사나 뉴스 이런 태그가 걸려 있다면 해당 링크로 들어가는게 webview 로 보여져야 하는거 아닌가요 ?! 제가 생각을 이상하게 하고 있는건가요 
숀화이트 (3,310 포인트) 님이 2014년 8월 11일 답변
0 추천
webview.getSettings().setJavaScriptEnabled(true);   // 자바스크립 사용
webview.setWebViewClient(new WebViewClient() {
public void onPageFinished(WebView view, String url) {  // url 로드시 시작
view.loadUrl("javascript:document.getElementsByTagName('a')[6].click()");
}
});
webview.loadUrl("http://m.naver.com");
 
올리신 소스대로하면 클릭됩니다.
단지 loadUrl을 나중에 해야되겠죠
 
그나저나 저 상태로 실행하면 아마 무한클릭이...
alkyne (22,960 포인트) 님이 2014년 8월 11일 답변
무슨 이유인지 모르겠는데 안되네요... ㅜㅜ 그냥 저렇게 밖에 코딩해놓은게 없는데....
...