使用 selenium-webdriver 扩展 jstree 的所有节点

Expanding all Nodes of jstree using selenium-webdriver

我为我糟糕的英语道歉,但我真的需要帮助。 我正在尝试使用 selenium-webdriver 在 c# 中自动化 Internet Explorer 以填充外部网站上的公式(顺便说一句。我有良好的意图 :D)。

我的问题是 select 动态加载的 jstree 中的节点。 selecting 一个节点后,网站生成了一个新的 ul 元素,我无法通过 xPathes 使用 selenium 的 webdriver 找到它们,直到单击父节点并生成这些元素。 你能帮我用 javascript 或代码隐藏扩展 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

我尝试了下面的代码片段并在 jstree 演示上工作:https://www.jstree.com/demo/

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

请先检查以上代码是否可以在您的 jstree 上运行。 然后你可以使用 selenium api: driver.execute_script() 在浏览器上执行上面的代码如下:

Java 示例:

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

Java脚本示例:

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

Python 示例:

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