我想从名为"ListFirst"的iframe中获取所有锚标记文本。我正在尝试迭代文本,并将每个文本与我要单击的字符串"AGENT-WIN3E64"进行比较。但是我在这里做的比较e['text']==u'AGENT-WIN3E64'变成了错误事件,尽管字符串是相同的。请帮忙。
这是我的代码:
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;
通过下面的设置,我试图重新创建您描述的情况。下面的.py
脚本似乎找到了合适的锚点。
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>
测试.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;
该输出,
found anchor
但请注意,您也可以直接使用xpath、找到锚点
anchor = childframe.find_by_xpath("//a[text() = 'AGENT-WIN3E64 ']")