[英]Selenium - Can't get text from element (python)
我正在嘗試從以下網址獲取輸入結果: 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")
但它不起作用,並返回一個空字符串。
必需的元素是base64圖像,因此您可以從@src
獲取base64值,將其轉換為圖像並使用PIL之類的工具(非常復雜的方法)獲取值,或者可以通過直接API調用獲取結果:
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'))
我的偏好是給定的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()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.