selenium |Python异常:上传产品图片到wordpress时“元素不可交互”

ezykj2lf  于 2023-01-06  发布在  Python
关注(0)|答案(1)|浏览(197)

我写的代码,自动上传产品到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()

帮帮我。谢谢!

5t7ly7z5

5t7ly7z51#

我终于解决了它,在我的情况下,这是一个选择器的问题,因为我只是使用元素的ID,通常应该工作正常,但在这种情况下,我搜索具有该ID的元素,并有一个以上的HTML中,所以解决方案是使用完整的XPath到我想要单击的元素,而不是只有ID的xpath.
希望这对任何有同样问题的人有帮助。
干杯

相关问题