我正在尝试从以下输入中获取输入结果: 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")
但是它不起作用,并返回一个空字符串。
答案 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()