小编ask*_*ern的帖子

如果我们使用 find_element 而不是 find_element_by,则会出现错误“传入的定位器值无效”

我正在使用 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 的限制吗?我们是否有解决方案来解决我的问题,而无需像我一样更改我的代码。

python selenium-webdriver

6
推荐指数
1
解决办法
1万
查看次数

标签 统计

python ×1

selenium-webdriver ×1