【问题标题】:Send keys fills form to slow (Python + Selenium)发送密钥填充表单到慢速(Python + Selenium)
【发布时间】:2018-05-06 05:14:00
【问题描述】:

有什么方法可以让我更快地填写表格,因为查找 id 和通过 .send_keys 发送信息需要 10 秒来处理 7 个字段。我目前正在使用它,但它会减慢我需要它做的事情,感谢您的帮助。

driver.find_element_by_xpath("//*[@id='order_billing_name']").send_keys("John Doe")
driver.find_element_by_xpath("//*[@id='order_email']").send_keys("supreme@gmail.com")
driver.find_element_by_xpath("//*[@id='order_tel']").send_keys("012-345-6789")
driver.find_element_by_xpath("//*[@id='bo']").send_keys("439 N Fairfax Ave")
driver.find_element_by_xpath("//*[@id='order_billing_city']").send_keys("Los Angeles")
driver.find_element_by_xpath("//*[@id='order_billing_zip']").send_keys("90036")
driver.find_element_by_xpath("//*[@id='nnaerb']").send_keys("1111222233334444")

【问题讨论】:

  • 是延迟发送密钥还是查找元素?尝试从这些调用中暂时删除.send_keys(...),看看是否有明显的不同。
  • @JohnGordon 我该如何测试呢?查找元素时,我可以在 2 秒内抓取我需要的物品和尺寸,但是结帐页面需要很长时间。即使 sendkey 正在输入它也很慢

标签: python selenium-webdriver


【解决方案1】:

几个小时前我遇到了这个问题。而不是send_keys() 使用

driver.execute_script("document.getElementById('idName').setAttribute('value','text_to_put');

【讨论】:

  • 谢谢,它运行得非常完美而且非常快。我尝试对下拉菜单选择执行相同的方法,但效果不佳哈哈。有什么建议吗?
  • 我不确定,但我假设你会先点击它,然后尝试.click 正确的选项,虽然没有尝试过
  • 只是为了澄清 - 这是为了更快地找到一个元素,而不是为了让 send_keys 更快(当使用大量输入时)。另外,这个方法是否支持 XPATH 查找?
【解决方案2】:

要更快地填写表单字段,您可以使用induced WebDriverWait 作为element_to_be_clickable(),然后使用execute_script(),如下所示:

  • 使用CSS_SELECTOR

    text_to_insert = "John Doe"
    driver.execute_script("arguments[0].value = '" + text_to_insert + "';", WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "#order_billing_name"))))
    
  • 使用XPATH:

    text_to_insert = "John Doe"
    driver.execute_script("arguments[0].value = '" + text_to_insert + "';", WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//*[@id='order_billing_name']"))))
    
  • 注意:您必须添加以下导入:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    

参考

您可以在以下位置找到一些相关的详细讨论:

【讨论】:

    猜你喜欢
    • 2018-10-02
    • 1970-01-01
    • 1970-01-01
    • 2016-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-16
    相关资源
    最近更新 更多