python - 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_xpath
和By.XPATH
?
解决方案
推荐阅读
- sharepoint - 使用 sharepoint 搜索 API,如何在我的 sharepoint 租约内检索所有站点内的所有文档?
- azure-maps - PostRouteDirections 不会从路线中排除区域
- ibm-integration-bus - 如何在 JCN 中访问 XML 结构
- sql - Oracle 查询返回单行
- amazon-web-services - AWS 无服务器框架:创建 IAM 角色和策略时出现 MalformedPolicyDocument 错误
- powerbi - Power Bi:从 url 填充源查询中使用的参数
- javascript - 以编程方式调整 PNG 的大小
- excel - 使用单元格中的文本值作为公式
- php - 使用 PHP header:location 时下载速度慢
- android - 使用 Android Studio 录制屏幕视频的问题