如何用Selenium填写多行表格?

时间:2019-12-12 00:24:12

标签: python selenium

我正在尝试填写一个包含超过 250行的表单,而我能实现的唯一方法是逐行迭代 dataframe ,但是我遇到的问题是,由于某种原因,该页面向我发送了带有图例的警报

  

“会话已过期,请重新连接。”

然后我的问题是:与逐行迭代相比,是否可以填写多行且花费更少的时间?

我的代码:

#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()

如果要单击“ Agregarlíneadescripción”按钮。他在表格中又增加了一行。如果您位于循环的最后一圈,则不会添加,因为不允许空行

这是表单视图:

enter image description here

0 个答案:

没有答案