硒-无法从元素获取文本(python)

时间:2018-12-15 18:57:32

标签: python selenium

我正在尝试从以下输入中获取输入结果: https://web2.0calc.com/

但我无法获得结果,我已经尝试过:

result = browser.find_element_by_id("input")

result.text

result.get_attribute("textContent")

result.get_attribute("innerHtml")

result.get_attribute("textContent")

但是它不起作用,并返回一个空字符串。

2 个答案:

答案 0 :(得分:2)

必需元素是base64图像,因此您可以从@src获取base64值,将其转换为图像并使用PIL之类的工具(非常复杂的方法)获取值,或者可以通过直接API调用获得结果:< / p>

import requests

url = 'https://web2.0calc.com/calc'
data =  data={'in[]': '45*23'}  # pass your expression as value

response = requests.post(url, data=data).json()
print(response['results'][0]['out'])
#  1035

更新

如果您需要#input的值:

print(browser.find_element_by_id('input').get_attribute('value'))

答案 1 :(得分:1)

我的偏好是给定的POST示例(该示例为+),但您可以使用asteval来获取表达式并对其求值。 asteval可能有限制。比eval更安全。

from selenium import webdriver
from asteval import Interpreter

d = webdriver.Chrome()
url = 'https://web2.0calc.com/'
d.get(url)
d.maximize_window()
d.find_element_by_css_selector('[name=cookies]').click()
d.find_element_by_id('input').send_keys(5)
d.find_element_by_id('BtnPlus').click()
d.find_element_by_id('input').send_keys(50)
d.find_element_by_id('BtnCalc').click()
expression = ''

while len(expression) == 0:
    expression = d.find_element_by_id('result').get_attribute('title')

aeval = Interpreter()
print(aeval(expression))
d.quit()