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"
现在是绿色的,因为周围的 ""
表示它是一个字符串。
我强烈建议您在编辑器中启用语法高亮功能,以帮助您自行查找此类问题。
当运行以下代码时,我收到一个语法错误,但不知道为什么:
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"
现在是绿色的,因为周围的 ""
表示它是一个字符串。
我强烈建议您在编辑器中启用语法高亮功能,以帮助您自行查找此类问题。