python - 如何使用 Selenium 填写包含多行的表格?
问题描述
我正在尝试填写一个超过250 行的表格,而实现它的唯一方法是逐行迭代我的数据框,但我遇到的问题是,由于某种原因,该页面向我发出了警报传奇
“会话已过期,重新连接。”
那么我的问题是:与逐行迭代相比,是否可以填写包含多行的表格并且花费更少的时间?
我的代码:
#read data
df = pd.read_excel('pre_data.xlsx')
for index,row in df.iterrows():
X = index + 1
time.sleep(.3)
#fill inputs by css_selector
WebDriverWait(browser, 100).until(EC.presence_of_element_located((By.CSS_SELECTOR,f'#detalle_codigo_articulo{X}'))).send_keys(row['codigo'])
desc = row['descripcion']+'\n'+row['composicion']
WebDriverWait(browser, 100).until(EC.presence_of_element_located((By.CSS_SELECTOR,f'#detalle_descripcion{X}'))).send_keys(desc)
WebDriverWait(browser, 100).until(EC.presence_of_element_located((By.CSS_SELECTOR,f'#detalle_cantidad{X}'))).send_keys(row['cantidad'])
WebDriverWait(browser, 100).until(EC.presence_of_element_located((By.CSS_SELECTOR,f'#detalle_precio{X}'))).send_keys(str(row['precio']))
if index != len(df) -1 :
browser.execute_script('''document.querySelector('#detalles_datos > input[type=button]').click()''')
UNIDAD = [i for i in browser.find_elements_by_tag_name('option') if i.text.strip() =='unidades']
UNIDAD[index].click()
如果是点击“Agregar línea descripción”按钮。他在表格中再添加一行。如果您处于循环的最后一圈,则不会添加,因为不允许空行
这是表单视图:
解决方案
推荐阅读
- eclipse - 在命令行中以调试模式在eclipse中运行程序
- grails - 是否有用于创建批处理应用程序的 Grails 3 配置文件?
- reactjs - 如何在 Semantic UI React 中纠正不同操作系统的 CSS 差异?我在语义 UI React 中遇到 Form.Select 问题
- linux - 密件抄送无法与邮件命令一起正常工作
- python - 使用循环搜索文本文件
- sql - SQL从另一个表中选择匹配数据,其中匹配列具有相同的数据
- iis - 创建虚拟目录以访问共享网络驱动器
- python - 比较 for 循环中列表的差异
- javascript - 当没有服务器可用于处理请求时,Node.js 需要更好地理解 http.request 操作
- javascript - 当使用ngrx和Angular 6从外部组件发出事件时,如何更新状态对象?