python if __name__ == "__main__": IndentationError: ожидался блок с отступом - PullRequest
1 голос
/ 14 июля 2020

Я использую PyCharm, чтобы щелкнуть правой кнопкой мыши Run 'hello' или использовать оболочку для запуска python hello.py, оба возвращают ошибку ниже:

    if __name__ == "__main__":
                             ^ 
IndentationError: expected an indented block

код ниже скопирован из https://selenium-python.readthedocs.io/getting-started.html

import unittest
from selenium import webdriver
from selenium.webdriver.common.keys import Keys


class TestHello(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Chrome(
            "D:\\Softwares\\selenium\\ChromeDriver 83.0.4103.39\\chromedriver_win32\\chromedriver.exe")

    def test_pick_goods(self):
        driver = self.driver
        driver.get("http://www.python.org")
        self.assertIn("Python", driver.title)
        elem = driver.find_element_by_name("q")
        elem.send_keys("pycon")
        elem.send_keys(Keys.RETURN)
        assert "No results found." not in driver.page_source
        print("-----last line----")

    def tearDown(self):
        #self.driver.close()


if __name__ == "__main__":
    unittest.main()

Я использовал табуляцию или четыре пробела раньше, если name == " main ", но оба не действуют.

1 Ответ

3 голосов
/ 14 июля 2020

Ошибка возникает из-за пустого метода выше:

def tearDown(self):
    #self.driver.close()

У вас не может быть полностью пустого метода, синтаксический анализатор не может его обработать. Добавьте оператор pass, чтобы заставить его разобрать:

def tearDown(self):
    pass
...