2017-04-16 2 views
0

Ich kratze eine Website, die eine Liste von Fußballspielen mit JavaScript generiert hat. Ich habe die folgende Zeile geschrieben, die eine Liste aller Spielelemente auf der Seite erstellt:Ein Element in einem Element finden mit Selenium Webdriver

list = browser.find_elements_by_xpath('//*[@data-sportid="1"]') 

Wenn ich dann

schreiben
for game in list: 
    print game.text 

druckt alle Textfelder in jedem der Spiele enthalten (Heimelf Name, auswärtig Name, etc.)

jedoch die Schleife

for game in list: 
    print game.find_element_by_xpath('//*[@class="home-team"]').text 

pr Gibt den Namen der allerersten Heimmannschaft auf der Seite für jede Iteration der Schleife an.

Es scheint, dass game.find_element_by_xpath die gesamte Seite, und nicht nur dieses Element durchsucht, und so hält es den ersten Namen des Heimteams auf der Seite zurück.

Wie kann ich nach einem Kind Element innerhalb jedes Elements der Liste suchen?

EDIT

Here is the exact page I am working on

+0

u kann uns die Website geben? \ – nooby

+0

@nooby es um die Frage hinzugefügt – KOB

Antwort

1
driver = webdriver.Chrome() 
driver.get("https://www.betfair.com/exchange/football/coupon?id=2") 
list = driver.find_elements_by_xpath('//*[@data-sportid="1"]') 
for game in list: 
    print(game.find_element_by_css_selector('span.home-team').text) 

oder

driver = webdriver.Chrome() 
driver.get("https://www.betfair.com/exchange/football/coupon?id=2") 
list = driver.find_elements_by_xpath('//*[@data-sportid="1"]') 
for game in list: 
    print(game.find_element_by_xpath('.//span[@class="home-team"]').text) 
Verwandte Themen