2016-05-13 15 views
0

Ich möchte alle Anker-Tag-Text von einem iframe namens "ListFirst". Ich versuche, Text zu wiederholen und jedes mit der Zeichenfolge 'AGENT-WIN3E64' zu vergleichen, die ich klicken möchte. Aber der Vergleich, den ich hier e ['text'] == u'AGENT-WIN3E64 'gemacht habe, wird falsches Ereignis obwohl die Zeichenketten sind gleich. Bitte helfen Sie.Python Splitter Vergleichen Unicode-Elementliste mit String

Hier ist mein Code:

with iframe12.get_iframe('ListFirst') as iframe1231: 
     anchorList=iframe1231.find_by_tag('a') 
     for e in anchorList: 
      if e['text'] == u'AGENT-WIN3E64 ': #unicode string comparison 
       e.click() 
       break; 

Antwort

0

Mit dem Setup unter ich die Situation, die Sie beschreiben, neu zu erstellen versucht. Das unten stehende Skript .py scheint den Anker jedoch gut zu finden.

index.html,

<!DOCTYPE html> 
<html> 
    <head> 
    </head> 
    <body> 
     <iframe name="mainframe" src="iframe1.html"></iframe> 
    </body> 
</html> 

iframe1.html,

<html> 
     <head></head> 
     <body> 
       <iframe name="childframe" src="iframe2.html"></frame> 
     </body> 
</html> 

iframe2.html,

<html> 
     <head></head> 
     <body> 
       <a href="/a">AGENT-WIN3E64 </a> 
       <a href="/b">b</a> 
       <a href="/c">c</a> 
       <a href="/d">d</a> 
       <a href="/e">e</a> 
     </body> 
</html> 

test.py

from splinter import Browser 

browser = Browser('firefox', wait_time=10) 
browser.visit("http://localhost:8000/index.html") 

# get mainframe 
with browser.get_iframe('mainframe') as mainframe: 

    # get childframe 
    with mainframe.get_iframe('childframe') as childframe: 

     anchorList = childframe.find_by_tag('a') 
     for e in anchorList: 
      if e['text'] == u'AGENT-WIN3E64 ': #unicode string comparison 
       print "found anchor" 
       e.click() 
       break; 

Diese Ausgänge,

found anchor 

Aber beachten Sie, dass Sie auch den Anker direkt mit XPath,

anchor = childframe.find_by_xpath("//a[text() = 'AGENT-WIN3E64 ']") 

finden konnten,