2016-08-05 2 views
0

auf einer bestimmte Webseite, ich habe den folgenden Tag:Selen Python: Extrakt Feld von JSON-Daten in <a> Tag

<a id="AAA" class="BBB" data-json="{"link":"thelink","field1":1,"field2":5}"> 
Load more 
</a> 

Ich bin mit Selen/Python. Ich möchte 5 mal auf dieses Tag klicken, wobei 5 der Wert von "field2" in "data-json" ist.

Der XPath ist“.//*[@id='AAA ']“ (dank FireXPath) so möchte ich 5 Mal verwenden Sie den folgenden Befehl:

browser.findElement(By.XATH(".//*[@id='AAA']")).click(); 

Frage ist: Wie zu extrahieren diese "5" von < ein Tag>/data-json/field2?

Antwort

0

Wie Peers erwähnt, wäre es mit id weit besser sein.

können Sie verwenden get_attribute und json convertion:

>>> import json 
>>> data = browser.find_element_by_id("AAA").get_attribute("data-json") 
>>> json.loads(data)["field2"] 
>>> 5 
+0

Es wäre besser versuchen, wenn mit 'browser.findElement (By.ID ("AAA")) get_attribute ("data-json")'. .. :) –

1

Um den Wert eines Attributs zu erhalten, können Sie die Funktion link verwenden, in diesem speziellen Fall müssen wir den Daten-JSON zu einem dict analysieren und die Nummer bekommen. Mein vorschlagen, ist:

import json  
json_dict = json.loads(browser.findElement(By.ID('AAA')).get_attribute('data-json')) 
number_times = json_dict["field2"]