背景
我正在嘗試自動化網站資料輸入;但是,對于附加的 HTML 部分,我還沒有找到將值發送到欄位“___33_xsde_6h_input__data”的方法。
我已經看到 Selenium 無法根據問題 1、問題 2、問題 3和問題 4
直接寫入隱藏欄位。但是,我無法為我的場景找到具體的解決方案。
代碼嘗試的HTML
<td class="RND_Input" colspan="1"><div id="RND_generatedId_1" class="RND_FieldDecor">
<div class="RND_MII_Container">
<input type="hidden" name="___33_xsde_6h_input__data" value="RND:null-axxx"><input id="___33_xsde_6h_input__data" class="" type="text"
value="[not defined]" autocomplete="off">
</div></div></td>
Python:
我已經嘗試了大多數解決方案來查看是否能夠設定元素,但沒有運氣
#Attempt 1 by Xpath
inputElement =ObjSelenium.find_element(By.XPATH,'//*[@id="___33_xsde_6h_input__data"]')
inputElement =ObjSelenium.find_element(By.XPATH,'.//input[@id="___33_xsde_6h_input__data"]'
'/following-sibling::input[@type="hidden"]')
#Attempt 2 by CSS_SELECTOR
inputElement=ObjSelenium.find_element(By.CSS_SELECTOR,'div.RND_Input>input[type=hidden]')
inputElement=ObjSelenium.find_element(By.CSS_SELECTOR,'div.RND_MII_Container>input[type=hidden]')
#Attempt 3 by ID
js = "document.getElementById('___33_xsde_6h_input__data').value = 'text';"
ObjSelenium.execute_script(js)
問題
如何在 Selenium 驅動程式中設定 HTML 元素“___33_xsde_6h_input__data”以更新其值?
編輯: Undetectable Selenium 的答案拋出了以下內容(兩種方法)
TimeoutException: Message:
Stacktrace:
Backtrace:
Ordinal0 [0x0039FDC3 2555331]
Ordinal0 [0x003377F1 2127857]
Ordinal0 [0x00232E08 1060360]
Ordinal0 [0x0025E49E 1238174]
Ordinal0 [0x0025E69B 1238683]
Ordinal0 [0x00289252 1413714]
Ordinal0 [0x00277B54 1342292]
Ordinal0 [0x002875FA 1406458]
Ordinal0 [0x00277976 1341814]
Ordinal0 [0x002536B6 1193654]
Ordinal0 [0x00254546 1197382]
GetHandleVerifier [0x00539622 1619522]
GetHandleVerifier [0x005E882C 2336844]
GetHandleVerifier [0x004323E1 541697]
GetHandleVerifier [0x00431443 537699]
Ordinal0 [0x0033D18E 2150798]
Ordinal0 [0x00341518 2168088]
Ordinal0 [0x00341660 2168416]
Ordinal0 [0x0034B330 2208560]
BaseThreadInitThunk [0x76026359 25]
RtlGetAppContainerNamedObjectPath [0x77B087A4 228]
RtlGetAppContainerNamedObjectPath [0x77B08774 180]
uj5u.com熱心網友回復:
解決方案:
問題是代碼在另一個框架中,當我嘗試更新我的 HTML 并意識到有 2 個正文標簽時,我意識到了這一點。
所以為了激活正確的 Xpath,我需要根據這個問題激活框架
ObjSelenium.switch_to.frame(ObjSelenium.find_element(By.XPATH,"//iframe[@name='RND _SubSessioniFrame']"))
#where RND_SubSessioniFrame is the name of the iframe element associated in the main HTML
inputElement =ObjSelenium.find_element(By.XPATH, '//*[@id="___33_xsde_6h_input__data"]')
inputElement.send_keys("Yay!")
如前所述,我沒有在此處設定等待元素,因為我在執行以下操作之前已設定。
WebDriverWait(ObjSelenium, 10).until(ObjSeleniumExpectedConditions.presence_of_element_located((By.XPATH, '//*[@id="ButtonShowedAfterLoad"]')))
uj5u.com熱心網友回復:
要將字符序列發送到您需要為element_to_be_clickable()誘導WebDriverWait的元素,您可以使用以下任一Locator Strategies:
使用CSS_SELECTOR:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "td.RND_Input input[id*='input'][id$='data']"))).send_keys("Sgdva")使用XPATH:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//td[@class='RND_Input']//input[contains(@id, 'input') and contains(@id, 'data')]"))).send_keys("Sgdva")注意:您必須添加以下匯入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/410411.html
標籤:
