我正在使用 Python-Webdriver 来自动执行“单击”操作。这是我的代码:
from selenium.webdriver.common.by import By
from selenium import webdriver
from selenium.common.exceptions import InvalidSelectorException
LOGIN_BUTTON = (By.XPATH, '//a[contains(@class,"aui-nav-link login-link")]')
NEWS_OPTION = (By.ID, 'blq-nav-news')
driver = webdriver.Chrome()
driver.implicitly_wait(30)
driver.get("http://bbc.co.uk/")
myDynamicElement = driver.find_element(NEWS_OPTION)
myDynamicElement.click()
Run Code Online (Sandbox Code Playgroud)
控制台产生异常如下
raise InvalidSelectorException("Invalid locator values passed in")
selenium.common.exceptions.InvalidSelectorException: Message: Invalid locator values passed in
Run Code Online (Sandbox Code Playgroud)
但是,如果我改变线路
“myDynamicElement = driver.find_element(NEWS_OPTION)”
到
“myDynamicElement = driver.find_element_by_id('blq-nav-news')”
,没有例外,脚本按预期工作。
我发现根本原因是我们不使用
查找元素依据_*
。所以我想知道这是对 Python-Webdriver 的限制吗?我们是否有解决方案来解决我的问题,而无需像我一样更改我的代码。