【问题标题】:Fancytree selenium click eventFancytree selenium 点击事件
【发布时间】:2015-12-24 21:22:12
【问题描述】:

我们正在使用 selenium 测试一个 Web 应用程序,并尝试使用以下方法模拟花哨的树展开事件

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) {
    }
 });

你能告诉我们如何模拟一个花哨的树事件点击吗?

【问题讨论】:

  • 现在发生了什么,有什么错误吗?谢谢。
  • 您能否添加相同案例的示例公共站点,以及您尝试运行的示例代码,如果可能会出错

标签: java selenium junit fancytree


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    树节点可能是通过 Ajax 请求加载的,因此您必须等到节点被渲染。例如在花式树的“初始化”事件中使用超时或触发某些东西。

    【讨论】:

      【解决方案3】:

      试试这个。

      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()
      

      【讨论】:

        猜你喜欢
        • 2014-08-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-06
        • 1970-01-01
        • 1970-01-01
        • 2012-05-17
        相关资源
        最近更新 更多