首页 > 解决方案 > Pycharm Python Selenium driver.switch_to.default_content() 和 request.clsdriver = 驱动语法

问题描述

运行以下代码时,我收到语法错误,但不知道原因:

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 部分,这个测试运行没有问题

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

提前感谢您的帮助。

标签: pythonseleniumpycharm

解决方案


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

    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"现在是绿色的,因为周围""的 s 表明它是一个字符串。

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


推荐阅读