首页 > 解决方案 > 如何使用 selenium 和 python 将 Tab 键输入发送到 Web 浏览器

问题描述

我试图让这个脚本在将数据插入输入字段后发送一个制表键输入。原因是下一组数据将被输入到下一行。

示例 1

我尝试使用 send_key 方法将选项卡按钮事件发送到浏览器,但出现错误。是否有基于此代码示例调用选项卡键盘输入的正确方法?

from selenium.webdriver.common.keys import Keys

def GetQuote():
    for i in range(len(orders)):
        #description
        driver.find_element(By.XPATH, "/html[1]/body[1]/app-root[1]/div[1]/div[1]/app-record[1]/div[1]/div[2]/div[1]/app-record-quoting[1]/div[1]/app-record-product-list-panel[1]/form[1]/div[3]/div[1]/div[1]/div[1]/input[1]").send_keys(orders[i]['description'])

        #dropdown menu for Handling Unit
        select_element = Select(driver.find_element_by_xpath('/html[1]/body[1]/app-root[1]/div[1]/div[1]/app-record[1]/div[1]/div[2]/div[1]/app-record-quoting[1]/div[1]/app-record-product-list-panel[1]/form[1]/div[3]/div[1]/div[3]/div[1]/select[1]'))
        select_element.select_by_value('1')

        driver.implicitly_wait(1)
        driver.find_element(By.CSS_SELECTOR, "input[formControlName=handlingQty]").send_keys(orders[i]['handling unit'])
        driver.find_element(By.CSS_SELECTOR, "input[formControlName=packageQty]").send_keys(orders[i]['pieces'])
        driver.find_element(By.CSS_SELECTOR, "input[formControlName=length]").send_keys(orders[i]['length'])
        driver.find_element(By.CSS_SELECTOR, "input[formControlName=width]").send_keys(orders[i]['width'])
        driver.implicitly_wait(1)
        driver.find_element(By.CSS_SELECTOR, "input[formControlName=height]").send_keys(orders[i]['height'])
        element=driver.find_element(By.CSS_SELECTOR,"input[formControlName=weight]")
        element.send_keys(orders[i]['weight'])
        driver.implicitly_wait(1)
        if i < len(orders):
            element.send_keys(Keys.TAB); 

    driver.find_element(By.XPATH, "//button[@class='btn-filled clickable']").click() #generate quote button

标签: python-3.xseleniumselenium-webdriverautomationwebautomation

解决方案


尝试将 tab 键发送到元素

element=driver.find_element(By.CSS_SELECTOR,"input[formControlName=weight]")
element.send_keys(orders[i]['weight'])
    if i < len(orders):
        element.send_keys(Keys.TAB); 

推荐阅读