Pycharm Python Selenium driver.switch_to.default_content() 和 request.clsdriver = 驱动语法

Pycharm Python Selenium driver.switch_to.default_content() and request.clsdriver = driver syntax

当运行以下代码时,我收到一个语法错误,但不知道为什么:

import pytest
from selenium import webdriver


@pytest.fixture(scope="class")
def setup(request):
    global driver
    browser_name=request.config.getoption("browser_name")
    if browser_name == "chrome":
        driver = webdriver.Chrome(executable_path="C:\webdrivers\chromedriver.exe")
    elif browser_name == "firefox":
        driver = webdriver.Firefox(executable_path="C:\webdrivers\geckodriver.exe")
    elif browser_name == "IE":
        print("IE driver")

    driver.get("https://ign.com/wikis/")


    driver.implicitly_wait(10)
    iframe = driver.find_element_by_xpath("//iframe[@name='__tcfapiLocator']")
    driver.switch_to.frame(iframe)
    driver.find_element_by_css_selector(#_evidon-banner-acceptbutton).click()
    driver.switch_to.default_content()
    request.cls.driver = driver
    yield
    driver.close()

语法错误如下:

ImportError while loading conftest 'U:\test\conftest.py'.
C:\Program Files\Python39\lib\ast.py:50: in parse
    return compile(source, filename, mode, flags,
E     File "U:\test\conftest.py", line 38
E       request.cls.driver = driver
E       ^
E   SyntaxError: invalid syntax

Process finished with exit code 4

Empty suite

如果我注释掉 iframe 部分,则此测试运行没有问题

我猜这是“只见树木不见森林”的场景

在此先感谢您的帮助。

我看到你在这一行没有使用双引号:

driver.find_element_by_css_selector(#_evidon-banner-acceptbutton).click()

改用这个:

driver.find_element_by_css_selector("#_evidon-banner-acceptbutton").click()

“无效语法”通常意味着您缺少标点符号或违反了某些语法规则。要找到问题,请从显示错误的地方开始并向后工作。让我们看看报告语法错误的那一行之前的前几行:

    driver.find_element_by_css_selector(#_evidon-banner-acceptbutton).click()
    driver.switch_to.default_content()
    request.cls.driver = driver

Stack Overflow 中突出显示的语法提供了解决问题的线索。你可以看到 driver.find_element_by_css_selector( 是白色的,而 #_evidon-banner-acceptbutton).click() 是灰色的。灰色表示以 #.

开头的注释

我假设您的意思是 #_evidon-banner-acceptbutton 是 CSS 选择器。要解决此问题,您需要将其用引号括起来使其成为一个字符串:

    driver.find_element_by_css_selector("#_evidon-banner-acceptbutton").click()

注意 "#_evidon-banner-acceptbutton" 现在是绿色的,因为周围的 "" 表示它是一个字符串。

我强烈建议您在编辑器中启用语法高亮功能,以帮助您自行查找此类问题。