gpt4 book ai didi

javascript - 访问属性 "textContent"的权限被拒绝(Selenium::WebDriver::Error::JavascriptError

转载 作者:行者123 更新时间:2023-12-03 05:08:17 25 4
gpt4 key购买 nike

我正在尝试修复旧的自动化测试脚本以供工作。我是编程新手,到目前为止我已经做到了:

# 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)` . 

如果需要更多信息,请告诉我。

任何改进的方法都会很棒。另外,我接受有关自动化健全性测试的所有建议。

最佳答案

在不确切知道您使用的版本的情况下,很难确切地说出是什么导致了您遇到的错误,但我猜升级到最新版本的 Capybara 可能会修复该错误。除此之外,您的测试中还有一些需要改进的地方。

  1. has_xxx? 方法具有内置的等待行为,当您预计它们检查的事情在 95% 以上的时间内发生时,该行为非常有用,但如果它更像是 50/50 那么你的测试比需要的要慢。

  2. 切勿对 has_xxx? 方法的结果使用期望,而是仅使用 have_xxx 匹配器,因为当出现错误消息时,错误消息将更具描述性和有用性都是失败

  3. 您绝对不应该将 current_url/current_patheq/match 匹配器一起使用,而是应该使用have_current_path匹配器。由于内置的​​重试行为,这将使您的测试更加稳定。

  4. 不要混合使用expect和should语法,这会导致测试难以阅读/理解。

将所有这些放在一起,您的测试应该更像

# 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

关于javascript - 访问属性 "textContent"的权限被拒绝(Selenium::WebDriver::Error::JavascriptError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41935709/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com