2015-07-20 5 views
1

Я использую механический камень для очистки данных от Craigslist, у меня есть фрагмент кода, который загружает несколько изображений в Craigslist, все пути к файлам верны, но только одно изображение загружается несколько раз в чем причина.Только одно изображение, загружаемое несколько раз

unless pic_url_arry.blank? 
     unless page.links_with(:text => 'Use classic image uploader').first.blank? 
      page = page.links_with(:text => 'Use classic image uploader').first.click 
     end 
     puts "After classic image uploader" 
     form = page.form_with(class: "add") 
     # build full file path before setting like this => file = File.join(APP_ROOT, 'tmp', 'image.jpg') 
     i = 0 
     pic_url_arry = pic_url_arry.shuffle 
     pic_url_arry.each do |p| 
      form.file_uploads.first.file_name = p 
      i+= 1 
      page = form.submit 
      puts "******#{p.inspect}*******" 
      puts "******#{page.inspect}*******" 
     end unless pic_url_arry.blank? 
     # check if the file uploaded sucessfully with no. of files with no. of imgbox on page. 
     check_image_uploaded = page.at('figure.imgbox').count 
     if check_image_uploaded.to_i == i.to_i 
      # upload failure craiglist or net error. 
     end 
     end 

И ПИК массив имеет значение как [ "/home/codebajra/www/office/autocraig/public/uploads/posting_pic/pic/1/images__4_.jpg", «/ главная/codebajra/WWW/office/autocraig/public/uploads/posting_pic/pic/2/mona200.jpg "," /home/codebajra/www/office/autocraig/public/uploads/posting_pic/pic/3/images__1_.jpg "].

+0

Вы закачаете объявления в Craigslist? Как вы преодолели правило 1post/48hours, которое имеет Craigslist? –

ответ

1

Форма, содержащая файловое поле, устанавливается только один раз, и только первое изображение принимает первое изображение. Таким образом, обновленный код будет,

unless pic_url_arry.blank? 
    unless page.links_with(:text => 'Use classic image uploader').first.blank? 
     page = page.links_with(:text => 'Use classic image uploader').first.click 
    end 
    puts "After classic image uploader" 
    form = page.form_with(class: "add") 
    # build full file path before setting like this => file = File.join(APP_ROOT, 'tmp', 'image.jpg') 
    i = 0 
    pic_url_arry = pic_url_arry.shuffle 
    pic_url_arry.each do |p| 
     form.file_uploads.first.file_name = p 
     i+= 1 
     page = form.submit 
     form = page.form_with(class: "add") 
     puts "******#{p.inspect}*******" 
     puts "******#{page.inspect}*******" 
    end unless pic_url_arry.blank? 
    # check if the file uploaded sucessfully with no. of files with no. of imgbox on page. 
    check_image_uploaded = page.at('figure.imgbox').count 
    if check_image_uploaded.to_i == i.to_i 
     # upload failure craiglist or net error. 
    end 
    end 

надеясь, что это решит проблему.

+1

спасибо @roarfromror, он решил мою проблему. – codemilan