![](/img/trans.png)
[英]Change Element Attribute Using XPATH / Send_Keys - Selenium Python
[英]How to send keys to an element with type = number using Selenium Python?
我正在嘗試將數字發送到僅采用數字值的元素(文本框)。 這個元素如下:
目前,我有這段代碼(本段下的代碼)將數字輸入到元素中。 誰能告訴我為什么號碼不顯示? 任何幫助,將不勝感激。
bpm = 121
inputBpm = driver.find_element(By.XPATH, "/html/body/mp-root/div/ ... /div[3]/div/input")
inputBpm.clear()
inputBpm.send_keys(str(bpm))
這是周圍的元素:
<div _ngcontent-soo-c572="" class="track-bpm">
<label _ngcontent-soo-c572="" class="input-title">BPM</label>
<span _ngcontent-soo-c572="" class="input-title-info">(Beats per minute)</span>
<div _ngcontent-soo-c572="" class="input-text">
<input _ngcontent-soo-c572="" type="number" name="bpm" placeholder="0" min="0" max="999" step="0.01" class="ng-pristine ng-valid ng-touched"></div>
</div>
你可以簡單地做,
if inputBpm.get_attribute("type") == "number":
inputBpm.clear()
inputBpm.send_keys(str(bpm))
或者您可以使用 XPATH 找到type = number
的輸入標簽。
input_tag = driver.find_element(By.XPATH, "//input[contains(@type, 'number')]")
inputBpm.clear()
input_tag.send_keys("9023")
<input>
元素具有屬性type="number"
、 min="0"
和max="999"
<input _ngcontent-pxo-c572="" type="number" name="bpm" placeholder="0" min="0" max="999" step="0.01" class="ng-valid ng-touched ng-dirty">
要將字符序列發送到您需要為element_to_be_clickable()引入WebDriverWait的元素,您可以使用以下任一定位器策略:
使用CSS_SELECTOR :
bpm = 121 my_element = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input.ng-valid.ng-touched.ng-dirty[name='bpm']"))) my_element.click() my_element.clear() my_element.send_keys(str(bpm))
使用XPATH :
bpm = 121 my_element = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@class='ng-valid ng-touched ng-dirty' and @name='bpm']"))) my_element.click() my_element.clear() my_element.send_keys(str(bpm))
注意:您必須添加以下導入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.