pekorinko / review_check

0 stars 0 forks source link

【リファクタリング】口コミが無いGoogleのURLが入力された際にエラーを出さず「口コミの取得に失敗しました」などのアラートを出すようにしたい_0530_MKさん質問事項 #76

Closed pekorinko closed 3 years ago

pekorinko commented 3 years ago

例)口コミがそもそも存在しないGoogleの検索結果のURL image

現状

lib/my_tools/selenium_tool.rb:10:in initialize' lib/my_tools/place_data_scraper.rb:7:innew' lib/my_tools/place_data_scraper.rb:7:in initialize' app/controllers/results_controller.rb:43:innew' app/controllers/results_controller.rb:43:in `create'

![image](https://user-images.githubusercontent.com/61894818/119823369-b078b180-bf2f-11eb-81ca-34a01ffff680.png)
## エラーの原因
- `selenium_tool.rb`のinitializeメソッドで口コミモーダルのHTMLに存在する`lcorif`クラスが表示されるまで30秒待つ処理を行っているため、口コミが存在しないGoogleのURLの場合は`Selenium::WebDriver::Error::TimeoutError`が起こる

【selenium_tool.rb】 def initialize(url) @url = url options = Selenium::WebDriver::Chrome::Options.new options.add_argument('--headless') @d = Selenium::WebDriver.for :chrome, options: options wait = Selenium::WebDriver::Wait.new(timeout: 30) @d.get(@url) wait.until { @d.find_element(:class_name, 'lcorif').displayed? }←口コミモーダルが表示されるまで30秒待つ end


口コミモーダル全体に割当てられている`lcorif`クラス
![image](https://user-images.githubusercontent.com/61894818/119824415-d81c4980-bf30-11eb-9e95-92bbb8078d7e.png)
pekorinko commented 3 years ago

解決→results_controller.rbの以下コードをbegin~rescueで囲った

begin
        place_data_scraper = MyTools::PlaceDataScraper.new(@url)
        place = place_data_scraper.save_place
        place_id = place.id
        place_data_scraper.save_review(place_id)
        @place = place_data_scraper.save_place
        user_id = session[:user_id]
        check_credibility = MyTools::CheckCredibility.new(place_id)
        @result = check_credibility.credibility(user_id)
        redirect_to result_path(@result)
      rescue StandardError
        redirect_to root_path, notice: '口コミの取得に失敗しました'
      end

解決に至った背景

pekorinko commented 3 years ago

【MKさんに伺うこと_0530】Googleでは無い口コミURLが入力された際の新たに発見した問題点

Gooleの口コミが無いURLを検索した後に改めてGoogleの口コミURLを入力して調査ボタンを押すと「口コミの取得に失敗しました」とアラートが出てしまう image 「口コミの取得に失敗しました」とアラートが出た後に再度、口コミURLを入力して「調査」ボタンを押すと正常に挙動し、口コミの調査結果を表示してくれる image

pekorinko commented 3 years ago

image image

pekorinko commented 3 years ago

46: place = place_data_scraper.save_place

全部作り終わった後に再考する

解決

→HTMLの構造改善(application.html.erbにCSSをまとめる、_form.html.erbの廃止)をしたら自然にバグが解消された