试图在Python中使用Selenium将值“ 100000”输入到Web表单中,但是无论我尝试如何发送它,始终无法正常工作。
很抱歉,我对术语缺乏了解。我会尽力而为,但我是自学成才的新手。另外,我很抱歉,但是我不能告诉您该网站,否则我的雇主不会很高兴。
网页上的框会自动填充一个美元符号。我知道网络表单中的框期望使用货币格式的整数。 当我查看网页上的html元素时,它提供了以下信息
<input type="number" step="1" name="moneying" size="35" id="moneying"
class="moneying input currency error" value="" data-type="currency" data-
mandopt="mand" required="" pattern="[\$]?[0-9]+[\.]?[0-9]*" min="500"
onblur="validate(this);">
我尝试过:
我的代码的当前版本:
from selenium import webdriver
driver = webdriver.Chrome('location on my pc')
try:
driver.get(r"relevant web page")
moneying_box_wait = WebDriverWait(driver,20).until(EC.presence_of_element_located((By.ID,"moneying")))
moneying_box = driver.find_element_by_id("moneying")
moneying_box.click()
moneying_box.clear()
moneying_box.send_keys("100000")
我希望它在框中输入100000。框中什么也没有显示。
答案 0 :(得分:2)
如果要发送字符序列而不是presence_of_element_located
,则需要使用element_to_be_clickable
,并且可以使用以下任一解决方案:
使用CSS_SELECTOR
:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input.moneying.input.currency.error#moneying"))).send_keys("$1000.0")
使用XPATH
:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@class='moneying input currency error' and @id='moneying']"))).send_keys("$1000.0")
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC