有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Fancytree selenium单击事件

我们正在使用selenium测试一个web应用程序,并尝试使用以下方法模拟fancy tree expand事件

driver.findElement(By.xpath("//div[@id='tree']/ul/li/span/span[@class='fancytree-expander']")).click(); 

fancytree在jsp中看起来像这样

<div id="tree"></div>

js代码如下所示

$("#tree").fancytree({
    extensions: ["filter"],
    filter: {
        autoApply: true, // Re-apply last filter if lazy data is loaded
        counter: false, // Show a badge with number of matching child nodes near parent icons
        hideExpandedCounter: true, // Hide counter badge, when parent is expanded
        mode: "hide"  // "dimm": Grayout unmatched nodes, "hide": remove unmatched nodes
      },        
    checkbox: true,
    selectMode: 3,
    quicksearch: true,
    source: {
        url: ...
    },


    lazyLoad: function(event, data) {
        ...
    },

    loadError: loadError,

    collapse: function(event, data) {
    }
 });

您能告诉我们如何模拟花式树事件单击吗


共 (3) 个答案

  1. # 1 楼答案

    试试这个

    tree = WebDriverWait(driver, 10).until((EC.element_to_be_clickable((By.XPATH,".//*[@id='left']/ul/li[3]/span/span[1]"))))
    
    ActionChains(driver).click(tree).perform()
    
  2. # 2 楼答案

    树节点可能是通过Ajax请求加载的,因此必须等待节点呈现。例如,在fancytree“init”事件中使用超时或触发某些内容

  3. # 3 楼答案

    您可以在Selenium中执行任何想要的javascript代码

        FirefoxDriver driver = new FirefoxDriver();
        driver.ExecuteScript("[your fire event javascript code]");