【问题标题】:Using Selenium in Python to enter currency format text在 Python 中使用 Selenium 输入货币格式文本
【发布时间】:2019-01-10 00:49:15
【问题描述】:

尝试在 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);">

我试过了:

  • 直接使用 send_keys 类,没有任何变化
  • 在使用 send_keys 之前单击该框
  • 在使用 send_keys 之前清除该框
  • 等到可以在页面上找到元素,然后执行上述所有操作
  • 将 send_keys 与 Keys.NUMPAD# 一起使用
  • 在数字开头加$
  • 在数字开头添加\$
  • 使用 Firefox 驱动程序而不是 Chrome 驱动程序
  • 输入值为 100000.00 和 100000

我的代码的当前版本:

    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。盒子里什么都没有。

【问题讨论】:

  • 如果您删除try,您会看到什么错误? (如果有的话)如果你发送一个数字而不是一个字符串怎么办? send_keys(100000) 除了这两件事之外,基本上不可能不看页面就知道问题可能是什么。一般来说,确保 Selenium 正在执行您自己手动执行的所有操作(和等待)。这听起来很明显,但往往是问题所在。
  • 感谢您的建议。如果我输入数字而不是字符串,Send_keys 没有做任何不同的事情。 “尝试”是因为这只是一大段代码中的一小段。其余的代码都在工作,只是这一部分没有。

标签: python selenium xpath css-selectors webdriverwait


【解决方案1】:

如果您打算发送字符序列而不是 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
    

【讨论】:

  • 谢谢德班扬。仍然无法正常工作:/,但这是等待它可点击的好时机。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-24
相关资源
最近更新 更多