簡體   English   中英

硒-無法從元素獲取文本(python)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM