Python 3.x 如何让selenium等待特定的标记出现

Python 3.x 如何让selenium等待特定的标记出现,python-3.x,selenium,Python 3.x,Selenium,我正在上传一张图片,我用time.sleep(3)让它完成上传。但有时3秒钟是不够的。我不确定代码应该是什么样子,以使slenium检查特定的标记,然后继续执行某些操作 #input image path try: element = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, "/html/body/table[2]/tbody/tr[2]/td/h5/

我正在上传一张图片,我用time.sleep(3)让它完成上传。但有时3秒钟是不够的。我不确定代码应该是什么样子,以使slenium检查特定的标记,然后继续执行某些操作

#input image path
try:
            element = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, "/html/body/table[2]/tbody/tr[2]/td/h5/ul/li[1]/div[2]/ul/li/form[1]/input[5]")))
            element.send_keys('C:\\1.png')
            print("Add actionImageURL 1: " + str(element.get_attribute('value')))
        except Exception:
            print("actionImageURL 1 Path Failed")
#click upload button        
try:
            element = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, "/html/body/table[2]/tbody/tr[2]/td/h5/ul/li[1]/div[2]/ul/li/form[1]/input[6]")))
            element.click()
            print("actionImageURL 1 Uploading...")
            #maybe here is where i can do find for the tag and do a loop wait?
            images = driver.find_elements_by_class_name('img-thumbnail ng-hide')
            previewlink = images.get_attribute('src')
            print(previewlink)
            if preview == 't.notInPlaceActionImageURL_preview':
                print('Link: ' + print(previewlink))
                time.sleep(3)
            print("actionImageURL 1 Uploaded")
        except Exception:
            print("actionImageURL 1 Upload Button NOT FOUND")
我不知道如何处理像这样的html标签,请参见图像上传前后:

之前:

之后:


隐式可能会解决我的问题,但我希望解决标记的问题,以及如何处理这样的标记。谢谢

如果您将一个方法编码为wait,那么您可以在项目中使用该wait方法

private static WebElement waitForElement(By locator, int timeout)
{
    WebElement element=new WebDriverWait(driver,timeout).until(ExpectedConditions.presenceOfElementLocated(locator));
    return element;
}
上面的代码是wait方法

如果你想用这个方法


waitForElement(By.xpath(//button[@type='submit']),50)

例如,您可以在此处使用web元素

我可以看到您已经在使用位于((By.XPATH,))的元素的EC.visibility。当对所需的标记使用相同的技术时,您会遇到什么问题。@rahulrai EC.visibility_of_element_located((By.XPATH,))不是问题,问题出现在第二个EC.visibility_of_element_located((By.XPATH,))之后。在
打印(“actionImageURL 1上传…”)之后
什么是上传图像,但是有一个上传时间。我的python下一步将跳出导致上载失败的页面,因为它仍在上载图像。我对python还是相当陌生,但我认为您的示例是针对Java的?我尝试使用webdriverwait,我想这就是你的意思:请查看我的更新代码,我的错误可能是我的类名是wong?