在递归函数中获取元素

时间:2016-09-10 20:29:09

标签: javascript recursion coffeescript protractor

我正在尝试使用量角器从多个页面获取文本,但是递归似乎不起作用...

这个想法是:

  1. 来自具有相同“名称”
  2. 的元素的getText()
  3. 将文本推送到数组
  4. browser.wait直到推送完成,然后检查下一页按钮是否启用。
  5. 如果启用,请转到下一页,然后再次调用该函数(继续将下一页中的文本推送到数组中)。
  6. 代码是(coffeescript):

      # define function getMyList
      getMyList = (CL, CLTemp) ->
        console.log "In function"
        tabs = element.all(By.css "[name='some selector']").map((elm) -> elm.getText())
        tabs.then((text) -> 
          CL.push text
          return)
    
        browser.wait(->
          CL.length != CLTemp.length).then ->
             console.log CL.length
             nextPage = element(By.css "[title='Next Page']")
             # hasClass is a function determining if the button is enabled or not
             return hasClass("[title='Next Page']", 'disabled').then (class_found) ->
               if class_found
                  console.log CL
                  return CL
               else
                  console.log "Enabled"
                  CLTemp = CL
                  # scroll down to the button
                  browser.executeScript("arguments[0].scrollIntoView();", nextPage.getWebElement()).then ->
                    nextPageGo = element(By.css "[title='Next Page'] span[class=ng-binding]")
                    nextPageGo.click().then -> 
                      getMyList (CL, CLTemp)
               return
             return
           return
    
    
      # Run the function. myList = [] and myListTemp = []
      getMyList (myList, myListTemp)
    

    结果打印:

    In function
    1
    Enabled
    In function
    

    意味着它可以运行到第一次递归(即,转到下一页),但是停止获取第二页的文本?

    我已经抓了两天但仍然无法弄清楚为什么递归不起作用......

    我是量角器的新手。如果我能得到一些提示,那将是很棒的!非常感谢你。

0 个答案:

没有答案