python - 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 部分,这个测试运行没有问题
我猜这是“只见树木不见森林”的场景
提前感谢您的帮助。
解决方案
“无效语法”通常意味着您缺少标点符号或违反了某些语法规则。要查找问题,请从显示错误的位置开始并向后工作。让我们看一下报告语法错误之前的前几行:
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 表明它是一个字符串。
我强烈建议您在编辑器中启用语法高亮,以帮助您自行查找此类问题。
推荐阅读
- android - 保护双向通信边缘设备和手机
- shell - 如何从 fail2ban 日志中获取唯一 IP(和禁止次数)
- python - scrapy CrawlerProcess() 运行我的输入字段两次
- sql - 如何连接 SQL 表并包含缺失的行?
- bash - GitBash:如何传递以斜杠 / 开头的参数而不将其视为目录?
- javascript - 反应状态未更新以在反应本机中显示下一个 URI 图像
- html - 如何在左侧添加文本而在右侧添加图像。使用 div
- r - 如何根据公共 ID 将一个变量(列)中的 NA 替换为另一行中的值
- bash - Linux Bash 脚本 Awk 字段分隔符
- mysql - mysql 8 不接受数据文件作为表空间的文件