Czy wywołanie takie jak browser.find_elements_by_css_selector('input[type=text]')
zawsze zwraca obiekty WebElement
w kolejności odzwierciedlającej DOM?Czy find_elements_by_ * funkcje zawsze odzwierciedlają kolejność DOM?
Pytam, ponieważ mam aplikację podobną do listy, a kolejność elementów formularza na stronie (dodana dynamicznie) jest niezbędna i być może jestem analna, ale testuję to zachowanie jako część z mojego zestawu testów.
N.B .: Prawdopodobnie przeprowadzę test w różnych przeglądarkach.
Mój testowy (Python z unittest
):
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)
Anegdotycznie widziałem, że zwrócone elementy były zgodne z pozycją DOM. W przeciwnym razie, gdy robię listę elementów i określam 'list [0]' po prostu NAPRAWDĘ mam szczęście, że pobiera ten sam element za każdym razem. –