首页 > 解决方案 > Selenium + Python:xpath 定位器的 InvalidSelectorException

问题描述

我将 Pycharm 与我的 Python 自动测试一起用于单页应用程序,其中我有一个用户页面,其中有一个带有一些输入字段的用户块。因此,其中一个字段的 html 代码是:

<div data-v-1f9916c7="" class="el-input">

当我使用带有执行 geckodriver 窗口的 pycharm python 控制台来调试一些东西时,我写道:wd.find_element_by_xpath("(//input[@type='text'])[4]").send_keys("123456")一切正常 - 我在需要的输入字段中看到一个数字。然后我回到我的自动测试代码,我们在其中使用 PageObject 和定位器,我的定位器看起来像这样:NAME = (By.XPATH,"(//input[@type='text'])[4]")类方法看起来像这样:

class UsersPage(BasePage):
    def set_name(self, name):
        self.driver.find_element(*UsersPageLocators.NAME).send_keys(name)

然后我运行我的测试(也在 PyCharm 中)并得到一个错误:selenium.common.exceptions.InvalidSelectorException: Message: Given xpath expression "//input[@type='text'])[4]" is invalid: SyntaxError: The expression is not a legal expression. 该元素的 HTML 代码没有什么特别的:

<div data-v-1f9916c7="" class="el-input">
<input type="text" autocomplete="off" class="el-input__inner">
</div>

请帮助我理解为什么 xpath 定位器在 python 控制台中有效而在测试本身中无效?也许是因为使用“by”的不同类型:find_element_by_xpathBy.XPATH

标签: pythonseleniumxpath

解决方案


推荐阅读