2013-10-14 108 views
0

我想phantomjs湊這個網頁:Phantomjs不點擊元素正確

http://www1.macys.com/shop/product/john-ashford-shirt-long-sleeve-solid-rugby-polo?ID=875571&CategoryID=20640&LinkType=PDPZ1

,並且對於每種顏色,獲得可用的尺寸。我認爲這需要每種顏色,等待一下,並檢查哪些尺寸有class=disabledOption。現在我有一些看起來像這樣:

get_colors_for_size = (index, color_elem, item_id) -> 
    $(color_elem).select() 
    setTimeout(-> 
     size_selector = "#sizeList"+item_id+" > li" 
     $(size_selector).each (index, size_elem) -> 
      size_name = size_elem.title 
      if not $(size_elem).hasClass("disabledOption") 
       console.log($(color_elem).title + " " + size_name) 
       #sizes_for_color.push(size_name) 
    , 500) 

$(color_selector).each (index, color_elem) -> 
     color_name = color_elem.title 
     console.log(color_name) 
     interval = 1000*index  
     console.log(interval)    
     setTimeout(-> 
      get_colors_for_size(index, color_elem, item_id) 
     , interval) 
    , item_id, get_colors_for_size 

然而,有兩個問題:

1)我不覺得顏色元素被適當的選擇(我也對他們試圖click()和他們所有的孩子),因爲我得到相同大小的選項返回每種顏色 2)這是非常醜陋的,可能會受到競爭條件。

是否有另一種執行阻止工作流程的方式,例如暫停此js執行以等待其他js執行?

回答