Javascript 递归函数中的get元素

Javascript 递归函数中的get元素,javascript,recursion,coffeescript,protractor,Javascript,Recursion,Coffeescript,Protractor,我正在尝试使用量角器从几个页面获取文本,但是递归似乎不起作用 这个想法是: 来自具有相同“名称”的元素的getText() 将文本推入数组 浏览器。等待推送完成,然后检查“下一页”按钮是否处于启用状态 如果启用,请转到下一页,然后再次调用该函数(继续将下一页中的文本推送到数组) 代码是(coffeescript): 结果打印: 这意味着它可以运行到第一个递归(即,转到下一页),但在获取第二页的文本时停止 我已经挠头两天了,但仍然不明白为什么递归不起作用 我不熟悉量角器。如果我能得到一些提示,那就

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

这个想法是:

  • 来自具有相同“名称”的元素的getText()
  • 将文本推入数组
  • 浏览器。等待推送完成,然后检查“下一页”按钮是否处于启用状态
  • 如果启用,请转到下一页,然后再次调用该函数(继续将下一页中的文本推送到数组)
  • 代码是(coffeescript):

    结果打印:

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

    我已经挠头两天了,但仍然不明白为什么递归不起作用


    我不熟悉量角器。如果我能得到一些提示,那就太好了!!非常感谢。

    你能分享一下网站吗?我刚发现可能是超时的问题。当“下一页”顺利快速加载时,代码运行良好……(当我有更好的互联网和运气时!)我尝试增加超时时间,但结果显示“等待量角器在11秒后与页面同步超时”。我一直在抓取的网站是www.bigschedules.com.Good。那么你的问题解决了?或者你需要一些帮助?我想知道有没有更好的方法来处理超时问题?或者我只能增加超时限制?browser.wait(EC.elementToBeClickable(element,8000)。然后catch(函数(){assert.fail('element is not click able');});这里的元素可以是:nextPage或nextPageGo。你可以共享网站吗?我刚刚发现可能是超时问题。当“下一页”顺利快速加载时,代码工作正常……(当我有更好的互联网和运气时!)我尝试增加超时时间,但后来它出现了“等待量角器在11秒后与页面同步超时。”我一直在抓取的网站是www.bigschedules.com.Good。那么你的问题已经解决了?或者你需要一些帮助?我想知道有没有更好的方法来处理超时问题?或者我只能增加超时限制?浏览器。等待(EC.element)可选择(element,8000).thenCatch(函数(){assert.fail('element is not click able');});这里的元素可以是:nextPage或nextPage。
      # 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