2016-12-15 3 views
0
내가 셀레늄을 사용하여 뭔가를 자동화하기 위해 노력하고있어

하여 태그에 ID 속성을 주입, 문제는 태그가 어떤 ID가없는, 그래서 그래서 XPath를 사용하여 컨트롤을 찾아 JS 야한다는 것입니다 :자바 스크립트 : XPATH

document.evaluate ('/ html/body/header [2]/div [2]/div/div [1]/div/div /), 널 (null) 문서, 널 (null), XPathResult.FIRST_ORDERED_NODE_TYPE는

을 .singleNodeValue이 크롬의 콘솔로부터의 응답입니다 :

<input> type="file" data-autosubmitoff="true" accept=".xls,.csv,.xlsx" name="File" class="hidden"></input> 

whic h는 xpath로 내 컨트롤을 찾았습니다. 셀렌에서 참조 할 수 있도록 ID를 삽입하려고합니다.

나는 이런 식으로 작업을 수행하려고 :

document.evaluate('/html/body/header[2]/div[2]/div/div[1]/div[1]/div/div/div/form/fieldset/div[1]/input', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.innerHTML='input id="UploadedFileFilter" type="file" data-autosubmitoff="true" accept=".xls,.csv,.xlsx" name="File" class="hidden">' 

는 기본적으로 ID와 전체 태그를 다시 작성하고 콘솔은이 답변에 따라 응답 :

input id="UploadedFileFilter" type="file" data-autosubmitoff="true" accept=".xls,.csv,.xlsx" name="File" class="hidden">" 

완벽을! 하지만 DOM을 보면 Input 태그가 여전히 오래된 태그이고, 무엇이 잘못 되었나요?

감사합니다. 대신 HTML을 편집

답변

1

직접 바로이 같은 id 값을 설정하려고 :

var path = '/html/body/header[2]/div[2]/div/div[1]/div[1]/div/div/div/form/fieldset/div[1]/input'; 
var element = document.evaluate(path, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue; 
element.id = 'UploadedFileFilter'; 

또한 innerHTML이 요소에 포함 된 HTML이 있음을 주목할 필요가있다. 요소 자체의 HTML을 편집하려면 outerHTML을 사용할 수 있습니다.

+0

좋아요! 그것은 효과가있다! ID가 변경되었습니다! 도와 주셔서 감사합니다... –