像browser.find_elements_by_css_selector('input[type=text]')
这样的调用是否总是以反映DOM的顺序返回WebElement
个对象?
我问,因为我有一个类似待办事项列表的应用程序,表单元素出现在页面上的顺序(动态添加)是至关重要的,也许我是肛门但我正在测试这种行为作为我的测试套件。
N.B。:我可能会在各种浏览器中运行测试。
我的测试(带unittest
的Python):
def test_titles_should_appear_in_the_order_they_are_entered(self):
titles = ['title 1', 'title 2', 'title 3']
for title in titles:
self._type_new_title(title).send_keys(Keys.RETURN)
inputs = self.browser.find_elements_by_css_selector('input[type=text].title')
# assumption: inputs will always reflect the DOM order, top to bottom
input_vals = [i.get_attribute('value') for i in inputs]
self.assertEqual(input_vals, titles)
答案 0 :(得分:1)
根据我的经验,这也是有道理的,因为FindElements方法将根据定位器解析文档以查找匹配项。
此外,即使它们不完全符合DOM顺序,每次都会保持一致,因此您应该安全地相应地编写测试。
但是,请记住,只要您在多个匹配项上使用订单,如果您添加或删除输入,那么该订单可能会更改,您需要相应地更新测试。