这应该很容易,但我无法让它工作.我正在使用Google主页作为测试运行一个小演示.
这是我的脚本:
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.keys import Keys
import time
browser = webdriver.Chrome()
browser.get("http://www.google.com") # Load page
time.sleep(0.2)
#top nav elements
elems = browser.find_elements_by_xpath("//span[contains(@class, 'gbts')]")
for e in elems:
print e.get_attribute('text')
browser.close()
Run Code Online (Sandbox Code Playgroud)
它返回:
None
None
None
None
None
None
None
None
None
None
None
Run Code Online (Sandbox Code Playgroud)
所以我认为它抓住了正确的元素,但也许不是正确的属性?不确定.我也尝试打印e.text(),但吐出来:
Traceback (most recent call last):
File "sample.py", line 14, in <module>
print e.text()
TypeError: 'unicode' object is not callable
Run Code Online (Sandbox Code Playgroud)
有什么想法吗?
*编辑 - 可能的解决方案?*
e.get_attribute('innerHTML') seems to work.
Run Code Online (Sandbox Code Playgroud)
roo*_*oot 26
这应该这样做:
from selenium import webdriver
browser = webdriver.Firefox()
browser.get("http://www.google.com")
for elem in browser.find_elements_by_xpath('.//span[@class = "gbts"]'):
print elem.text
Run Code Online (Sandbox Code Playgroud)
text是WebElement类的属性,因此它不可调用.
class WebElement(object):
"""Represents an HTML element.
...
...
@property
def text(self):
"""Gets the text of the element."""
return self._execute(Command.GET_ELEMENT_TEXT)['value']
Run Code Online (Sandbox Code Playgroud)
你有两个选择来获得第三场比赛:
# 1. Modify your xpath expression
browser.find_elements_by_xpath('(.//span[@class = "gbts"])[3]')[0].text
# 2. Access it by list index
browser.find_elements_by_xpath('.//span[@class = "gbts"])')[2].text
Run Code Online (Sandbox Code Playgroud)
小智 12
是的!解决方案被发现(我使用Python)对于instanc:webelement是ap标签
webelement.text()
Run Code Online (Sandbox Code Playgroud)
从实际情况来看,堆栈跟踪:
print page_box_block.text()TypeError:'unicode'对象不可调用
它希望是stdout中的html,但不是!
有时可能是一个奇怪的字符串"unicode对象不可调用"或某些类型错误解决方案很容易:
print element.get_attribute("innerHTML")
Run Code Online (Sandbox Code Playgroud)
在java中,get_attribute("innerHTML")和text()即将"相同",如果你需要来自元素的纯文本在Python 2.7中,现在text()有时会失败.
| 归档时间: |
|
| 查看次数: |
60270 次 |
| 最近记录: |