【问题标题】:python method not being calledpython方法没有被调用
【发布时间】:2022-10-12 23:20:47
【问题描述】:

我正在使用 Selenium Python 编写一个自动化测试,它将玩一个基于 Web 的井字游戏。方法 checkForWinner() 需要在每次点击后检查 UI 是否有一行显示获胜者的文本,但该方法没有被调用,我不知道为什么。

    def checkForWinner(self, load_browser):
        
        if Tags.resultOh:
            winner = 'O'
            LOGGER.debug('Winner O')
            assert winner
        elif Tags.resultEx:
            winner = 'X'
            LOGGER.debug('Winner X')
            assert winner
        elif Tags.resultTie:
            winner = 'None'
            LOGGER.debug('Tie')
            assert winner
        else:
            self.test_playGame(load_browser)

每当运行脚本时,游戏都会得出结论并且脚本会挂起。游戏结束后浏览器应该关闭,但它没有。它显然在等待一个没有被满足的条件,但我看不到它是什么。

【问题讨论】:

  • 这个脚本是针对另一个机器人运行的吗?还是这个机器人同时玩 X 和 O?
  • 它正在与机器人比赛。用户总是先走,所以这个机器人每次都会先行动。

标签: python selenium selenium-webdriver pytest


【解决方案1】:

我认为你被困在你的 for 循环中,在那里你递归地调用 test_PlayTTT() 方法。由于您正在与另一个机器人对战,因此您需要在每个机器人移动后跟踪游戏板的状态。现在,看起来你只是在跟踪这个机器人的动作,但它可能会点击其他玩家已经占据的方格。您希望 clickedSquares 包含对方机器人点击的方格,而不仅仅是这个方格。

在井字游戏中,每个玩家可以标记的最大方格数为 5,因此要么在每个玩家点击一个方格后检查获胜者,要么在 clickedSquares 的大小达到 5 时调用 checkForWinner()。

【讨论】:

    猜你喜欢
    • 2012-03-13
    • 2014-06-02
    • 2011-08-28
    • 2017-02-24
    • 2015-02-23
    • 2013-12-19
    • 1970-01-01
    • 2020-09-19
    相关资源
    最近更新 更多