нубский вопрос. Мне нужно передать 3000+ URL-адресов с листа CSV в Selenium. Мне нужно, чтобы Selenium перешел к каждой из этих ссылок, очистил информацию и затем поместил эту информацию в CSV.
Проблема, с которой я сталкиваюсь, заключается в том, что, когда я помещаю свои CSV-URL-адреса в массив, я не могу передать один единственный объект (URL) в Selenium за раз.
Я знаю, что мне, вероятно, нужна какая-то петля. Я попытался настроить циклы и выбрать из массива, используя .map, .select. и просто цикл.
urls.map do |url|
@driver.navigate.to #{url}
name = @driver.find_element(:css, '.sites-embed-
footer>a').attribute('href')
puts name
kb_link = name
kb_array.push(kb_link)
puts 'urls is #{n}'
end
В приведенном выше примере Selenium возвращает сообщение об ошибке «неверный URL». Дебаггинг с Pry говорит мне, что мой объект 'url' - это не один URL, а все же весь массив.
Как настроить Selenium на посещение каждого URL из массива один за другим?
РЕДАКТИРОВАТЬ: ----------------
Итак, после обширного устранения ошибок с Pry, я обнаружил пару проблем. Сначала было то, что мой CSV передавал вложенный массив в мой цикл, который вызывал ошибку URL. Мне пришлось сгладить массив и удалить его из гнезда, чтобы обойти эту проблему.
После этого мне пришлось встроить спасение в мой цикл, чтобы мой скрипт не умирал, когда натолкнулся на страницу без искомого элемента CSS.
Вот завершенный цикл.
begin
@urls1.each do |url|
@driver.navigate.to(url)
@driver.manage.timeouts.implicit_wait = 10
name = @driver.find_element(:css, '.sites-embed-
footer>a').attribute('href')
puts name
kb_link = name
kb_array.push(kb_link)
puts 'done'
rescue Selenium::WebDriver::Error::NoSuchElementError
puts 'no google doc'
x = 'no google doc'
kb_array.push(x)
next
end