2017-01-30 3 views
0

Я пытаюсь исправить старый сценарий автоматического тестирования для работы. Я новичок в программировании, и у меня это получилось:Права доступа к собственности «textContent» (Selenium :: WebDriver :: Ошибка :: JavascriptError

# Check if I can play some game 
Then(/^I should be able to play (.+)$/) do |game_name| 
    # TODO: better check for game play, game end, score count 

    if page.has_content?("GUEST") 
    find(:css, ".play", :text => "Play").click 
    else 
    start_game(game_name) 
    end 
#Here is where the error pops up: 
    if page.has_content?('Writing') 
    # Dont wait for players to join 
    expect(page.has_content?('Waiting for players')).to eq(true) 
    else 
    # Check for game object 
    page.should have_css("object#game") 

    # Check if correct game loading 
    current_url.should match(/#{GameWorld::GAMES[game_name]}/) 
    end 

    #Quick escape 
    ensure_on?('city') 
end 

Может кто-нибудь дать мне подсказку о том, как решить проблему

ошибка, что я получаю:.

`Error: Permission denied to access property "textContent" (Selenium::WebDriver::Error::JavascriptError)` . 

Если необходима дополнительная информация, дайте мне знать

Любой способ улучшить было бы здорово. Кроме того, я принимаю все предложения о способах автоматизации теста на чувствительность.

+0

Пожалуйста, добавьте трассировку стеки вы получаете с этой ошибкой и версию Капибары, селен WebDriver и Firefox вы используете –

+0

Я использую последний Firefox - 45.7.0. Кроме того, версии gem: capybara (2.12.0, 2.11.0) и селен-webdriver (3.0.5, 3.0.3). –

+0

Помог ли мой ответ решить проблему? (вы выбрали его как ответ, но затем добавили версии gem). Если не добавить полное сообщение об ошибке с помощью stacktrace. –

ответ

0

Не зная точно, какие версии вы используете, сложно сказать, что именно вызывает ошибку, которую вы получаете, но я бы предположил, что обновление до последней версии Capybara, вероятно, исправит эту ошибку. Кроме того, в вашем тесте есть несколько вещей, которые необходимо улучшить.

  1. В has_xxx? методах ожидающее поведение встроенного что полезно, когда вы ожидаете, что они проверяют, чтобы произойти 95 +% время, но если это больше похоже на 50:50, то ваш тест медленнее чем это должно быть.

  2. Никогда не используйте ожидание против результате has_xxx? методов, а не просто использовать have_xxx Искатель, так как сообщения об ошибках будут более описательными и полезно, когда есть неудачи

  3. Вы никогда не должны использовать current_url/current_path с eq/match, вместо этого вы должны использовать совпадение has_current_path. Это сделает ваши тесты более стабильными из-за встроенного в него поведения повторной попытки.

  4. Не смешивать ожидание и синтаксис, это приводит к трудным для чтения/понимания тестам.

Собирает все вместе, испытание должно быть больше как

# Check if I can play some game 
Then(/^I should be able to play (.+)$/) do |game_name| 
    # TODO: better check for game play, game end, score count 

    expect(page).to have_content(game_name) # This should be something that is on the page for both GUEST and logged in users just to verify the page has loaded 
    if page.has_content?("GUEST", wait: false) #disable the waiting/retrying behavior since we now know the page is already loaded 
    find(:css, ".play", :text => "Play").click 
    else 
    start_game(game_name) 
    end 

    expect(page).to have_content('Something') # Same as above - check for something that will be on the page when the actions triggered by the `click` or `start_game` calls above have finished 

    if page.has_content?('Writing', wait: false) #disable waiting because previous line has assured page is loaded 
    # Dont wait for players to join 
    expect(page).to have_content('Waiting for players') 
    else 
    # Check for game object 
    expect(page).to have_css("object#game") 

    # Check if correct game loading 
    expect(page).to have_current_path(/#{GameWorld::GAMES[game_name]}/) 
    end 

    #Quick escape 
    ensure_on?('city') 
end 
+0

Спасибо, попробуем. Спасибо за помощь! –

Смежные вопросы