Selenium返回空文本,而不是实际值

2024-09-29 05:22:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图获取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"))

它只返回空字符串

下面是完整的xpath:

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

Edit2:

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

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

它不作为值存在


Tags: texttxtidinputgetbyvaluedriver
2条回答

作为参考,我在提问之前已经切换到iframe,否则我将无法向页面发送输入,页面也不会返回结果。我无法共享代码,但工作流是这样的,单击一些链接以访问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")

尝试显式等待:-您需要切换到如下所示的iframe,如果IDtxt_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

相关问题 更多 >