2017-09-09 3 views
2

나쁜 영어는 사과하지만 정말 도움이 필요합니다. 나는 C#에서 Internet Explorer를 자동화하려고 노력하고 있는데, 외부 웹 사이트 (btw. i는 좋은 의도를 가지고있다.)에 공식을 채우기 위해 selenium-webdriver를 사용한다.selenium-webdriver를 사용하여 jstree의 모든 노드를 확장하십시오.

내 문제는 동적으로로드되는 jstree에서 노드를 선택하는 것입니다. 노드를 선택한 후 새로운 ul- 요소가 웹 사이트에 의해 생성되고 부모 노드가 클릭 될 때까지 xPathes를 통해 셀레늄 webdriver로 찾을 수 없습니다. 자바 스크립트 나 코드 숨김을 사용하여 jstree의 모든 노드를 확장 할 수 있습니까? hml 코드는 다음과 같습니다.

<div id="tree" class="jstree jstree-0 jstree-focused jstree-classic"> 
<ul> 
<li class="jstree-opened"> 
<a class="" href="#"> 
<ins class="jstree-icon"></ins> 
Nodetext 
</a> 
<ul></ul> 
</li> 
<li class="jstree-closed"> 
<a class="" href="#"> 
<ins class="jstree-icon"></ins> 
Name of Node 
</a> 
</li> 
</ul> 

위의 코드가 어떻게 보이는지 그림.

enter image description here

답변

0

나는 코드 아래에 노력하고 jstree 데모에 근무 : https://www.jstree.com/demo/

('#jstree_demo').jstree('open_all'); 

이 먼저 당신의 jstree에서 작업 할 수 있습니다 위의 코드를 확인하시기 바랍니다. 그럼 당신은 셀레늄 API를 사용할 수 있습니다 driver.execute_script()를 아래와 같이 브라우저에 위의 코드를 실행 :

자바 예 :

JavascriptExecutor js = (JavascriptExecutor) driver; 
js.executeScript("return ('#jstree_demo').jstree('open_all');"); 

자바 스크립트 예 :

driver.executeScript("return ('#jstree_demo').jstree('open_all');"); 

파이썬 예 :

driver.execute_script("return ('#jstree_demo').jstree('open_all');");