Python程序中selenium-click动作失效问题求解
大家好,最近在用Python鼓捣一个程序,旨在从Excel表格中读取产品信息,并利用selenium将其逐行写入到ERP系统中。使用了一个循环来表示在系统中创建一个产品,逐行读取Excel中的产品信息,直到表格中的每行产品信息都被执行一遍。然而,遇到了一个问题:在程序运行的第二遍循环中,红框所示的第一个元素的click动作会失效,导致整个程序跳出。我在单步调试时发现,该动作在单步调试中是正常的,但在正常运行时却失效了。
下图中提供了程序的有问题的代码部分(见图三)。希望有经验的大侠能够指点一下。感谢!
图一&二:程序运行过程中红框所示的元素,图三:程序代码部分
不熟悉,selenium,和JS 类似嘛,后端的python 代码可以发出来。 373527271 发表于 2024-4-14 22:07
不熟悉,selenium,和JS 类似嘛,后端的python 代码可以发出来。
有问题的python 代码如下所示:
# category_dropdown下拉菜单
product_category_dropdown_button1 = wd.find_element(By.ID,'o_field_input_883').click()# 下拉菜单按钮
time.sleep(6)
product_category_dropdown_button2 = wd.find_element(By.XPATH,'/html/body/ul/li').click()# 下拉菜单按钮
time.sleep(6)
product_category = row['product_category_button']
if product_category == 'Components':
product_category1_button = wd.find_element(By.XPATH, '/html/body/div/div/div/main/div/div/div/div/table/tbody/tr/td').click() # 需要Components按钮
pass
elif product_category == 'Finished Goods':
product_category8_button = wd.find_element(By.XPATH, '/html/body/div/div/div/main/div/div/div/div/table/tbody/tr/td').click()# 需要Finished Goods按钮
pass 深海鱼 发表于 2024-4-14 22:19
有问题的python 代码如下所示:
# category_dropdown下拉菜单
product_category = row['product_category_button']
if product_category == 'Components':
product_category1_button = wd.find_element(By.XPATH, '/html/body/div/div/div/main/div/div/div/div/table/tbody/tr/td').click() # 需要Components按钮
pass
elif product_category == 'Finished Goods':
product_category8_button = wd.find_element(By.XPATH, '/html/body/div/div/div/main/div/div/div/div/table/tbody/tr/td').click()# 需要Finished Goods按钮
pass
cat_list =product_category_button.item()
可否这样改,if product_category is in cat_list:
wd.find_element()
else:
text = 'Pls input a correct category name'
button event 输出提示。
这个下拉框是不是用到ajax 了
xpath找不到就要上下文找了 是不是第二遍有两个相似路径?筛选器里找一下 373527271 发表于 2024-4-14 23:09
product_category = row['product_category_button']
if product_category == 'Components':
...
感谢回复,最后用webdriverwait+ec解决了。估计是每次加载的时间不稳定造成的,大侠的方法没用过,回头也试试
product_type = row['product_type_button']
if product_type == 'Consumable':
product_type_button_locator = (By.XPATH, '/html/body/div/div/div/div/div/div/div/div/div/div/table/tbody/tr/td/select/option')
elif product_type == 'Storable Product':
product_type_button_locator = (By.XPATH, '/html/body/div/div/div/div/div/div/div/div/div/div/table/tbody/tr/td/select/option')
product_type_button = WebDriverWait(wd, 10).until(EC.element_to_be_clickable(product_type_button_locator))
product_type_button.click()
页:
[1]