我将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
?