我写的代码,自动上传产品到wordpress。
我在Python(3.10)中使用了 selenium (100.0.4896.88)。
我需要上传2种类型的产品图片(使用相同的代码):
1.生产图像
1.产品库图像
2 types of product images
1.设置产品图像(第一个代码)
#1 open upload frame
driver.find_element_by_id("set-post-thumbnail").click() #Click "set product image"
time.sleep(10 ) #waiting open frame
#2 open "dialog browser window"
driver.find_element_by_id("menu-item-upload").click() #Click tab "upload file"**-->CLICK OK**
driver.find_element_by_class_name("browser.button.button-hero").click() #open "dialog browser window"
time.sleep(5) #waiting dialog window open
#3 Send path file
pyautogui.write(product_image_path)
pyautogui.press('enter')
time.sleep(60 )#waiting upload image
#4 add image
driver.find_element_by_class_name("button.media-button.button-primary.button-large.media-button-select").click()
time.sleep(10)
2.添加产品库图片(第二个代码-与第一个代码相同)
#1 open upload frame
driver.find_element_by_class_name("add_product_images.hide-if-no-js").click()#Click "Add product gallery images"
time.sleep(10)#waiting open frame
#2 open "dialog browser window"
driver.find_element_by_id("menu-item-upload").click() #Click tab "upload file" ***--> CAN'T CLICK***
driver.find_element_by_class_name("browser.button.button-hero").click() #open "dialog browser window"
time.sleep(5) #waiting dialog window open
#3 Send path file
pyautogui.write(gallery_images_path) #path of File
pyautogui.press('enter')
time.sleep(60)#waiting upload image
#4 add image
driver.find_element_by_class_name("button.media-button.button-primary.button-large.media-button-select").click()
Click tab "upload file"
对于这两种类型的图片,使用相同的上传框架。2次上传的代码是相同的。
当上传“生产图片”(第一个代码),它的工作正常,但第二次上传:“产品图库图片”(第二个代码)不工作。 selenium 不能点击标签“上传文件”。
driver.find_element_by_id("menu-item-upload").click() #Click tab "upload file"
例外情况:
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable
(Session info: chrome=100.0.4896.88)
Stacktrace:
Backtrace:
Ordinal0 [0x00C17413+2389011]
Ordinal0 [0x00BA9F61+1941345]
Ordinal0 [0x00A9C520+836896]
Ordinal0 [0x00ACA1F3+1024499]
我试着分别运行这两个代码,它们都工作正常。
我还改变了2个代码的位置,但它只适用于第一个代码,第二个不工作。
我已经添加了win wait驱动程序,使用Queryselector或XPATH,但它们不起作用。
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '//button[text()="Upload files"]'))).click()
帮帮我。谢谢!
1条答案
按热度按时间5t7ly7z51#
我终于解决了它,在我的情况下,这是一个选择器的问题,因为我只是使用元素的ID,通常应该工作正常,但在这种情况下,我搜索具有该ID的元素,并有一个以上的HTML中,所以解决方案是使用完整的XPath到我想要单击的元素,而不是只有ID的xpath.
希望这对任何有同样问题的人有帮助。
干杯