2016-04-14 99 views
1

aşağıdaki satırı kullanırken div elemanları bulunan tüm alt listesi:Son alt öğeyi bulmak için bu Xpath dizesiyle ilgili ne değiştirilmelidir?

için:

driver.find_element_by_css_selector('div[id="panel2LocListShell"]').find_elements_by_tag_name('div') Ancak

son çocuğa div maddeyi bulmak için XPath kullanırken, bir zaman aşımı hatası var örnek:

WebDriverWait(driver,20).until(EC.presence_of_element_located((By.XPATH, './/div[@id = panel2LocListShell]/div[last()]')))

, eğer bir şey, bu XPath hakkında değiştirilmelidir neler İşte './/div[@id = panel2LocListShell]/div[last()]'

cevap

1

driver.find_element_by_css_selector('div[id="panel2LocListShell"]').find_elements_by_tag_name('div')

, selenyum id="panel2LocListShell" ile div elemanı içindeki herhangi derinlik seviyesinde tüm div alt öğelerini bulmak istiyorum ?: hattı. Bu durumda

.//div[@id = panel2LocListShell]/div[last()]

doğrudan
id="panel2LocListShell" ile div eleman altında bulunan div elemanlar arıyoruz. Ayrıca, panel2LocListShell tırnak içine alınmalıdır.

Sabit ifadesi: manuel uyku zaman aşımı hala xpath ifadesi sabitleme rağmen ihtiyaç duyulan gibi

.//div[@id = "panel2LocListShell"]//div[last()] 
+0

İlginç görünüyor. Aksi takdirde, "Öğe artık DOM'a eklenmez" hatası, WebDriverWait'ten sonra "div" öğelerinin tam listesini alırken gerçekleşir. Yine de yararlı bir cevap. – Phillip