Selenium returns 空文本而不是实际值

Selenium returns empty text instead of the actual value

我正在尝试获取 iframe 中的值。这是我卡住的部分

<input tabindex="20" class="dxeEditArea dxeEditAreaSys" name="txt_CADDE_SOKAK_KODU" value="1009" maxlength="8" id="txt_CADDE_SOKAK_KODU_I" onchange="ASPx.EValueChanged('txt_CADDE_SOKAK_KODU')" onblur="ASPx.ELostFocus('txt_CADDE_SOKAK_KODU')" onfocus="ASPx.EGotFocus('txt_CADDE_SOKAK_KODU')" type="text" style="text-align:Left;" autocomplete="off">

我试过使用,但到目前为止没有成功。

driver.find_element_by_id("txt_CADDE_SOKAK_KODU_I").get_attribute("innerText"))
driver.find_element_by_id("txt_CADDE_SOKAK_KODU_I").get_attribute("value"))

它只是returns我的空字符串。

这里还有完整的 xpath :

/html/body/form/div[4]/fieldset/div[4]/table[14]/tbody/tr/td[1]/input

编辑2:

我发现如果我检查页面我可以看到值,但是如果我使用这样的代码从 innerHtml 中获取值

print(driver.find_element_by_id("txt_MAHALLE").get_attribute("innerHTML"))

它不作为值存在。

尝试显式等待 :- 您需要像下面那样切换到 iframe,如果 ID txt_CADDE_SOKAK_KODU_I 是唯一的,您可以获得这样的 value 属性:

wait = WebDriverWait(driver, 10)
wait.until(EC.frame_to_be_available_and_switch_to_it((By.NAME, "MIframe1")))
print(wait.until(EC.visibility_of_element_located((By.ID, "txt_CADDE_SOKAK_KODU_I"))).get_attribute('value'))

进口:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC

作为参考,我在提问之前已经切换到 iframe,否则我将无法向页面发送输入并且页面不会 return 我的结果。我无法共享代码,但工作流程就像,单击一些链接以访问 iframe 并将输入发送到 iframe 内的框,然后单击按钮以获取结果并复制结果。

我能够解决我的问题,方法是先让 time.sleep(10) 等待,然后使用

分配等待直到页面中的所有元素都可见
WebDriverWait(driver, 150).until(EC.visibility_of_element_located((By.ID, "the element"))). 

之后我使用

访问了所有元素

driver.find_element_by_id("the element").get_attribute("value")