python-3.x - 如何使用 selenium 和 python 将 Tab 键输入发送到 Web 浏览器
问题描述
我试图让这个脚本在将数据插入输入字段后发送一个制表键输入。原因是下一组数据将被输入到下一行。
我尝试使用 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
解决方案
尝试将 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);
推荐阅读
- javascript - Flatten an array of objects into a single array
- asp.net-core-webapi - 启动后是否可以更改 MVC 路由?
- ios - 如果用户输入需要显示警报,则 Swift 文本字段文本 1 到 9
- android - RxAndroidBle - 我可以使用单个命令将可变数量的写入组合到特征吗?
- performance - 使用 Haskell 进行竞争性编程
- crystal-reports - 在 Crystal Reports 2013 中组织多个详细信息部分
- vue.js - 如何将“数据”或“方法”结果用于 VueRouter 道具
- javascript - d3js v5 调整分组条形图的大小
- gps - 转换 GPS 数据 Cello-CANiQ
- angular - 使用 Jasmine 对带有 rxjs 主题的 Angular 组件进行单元测试