A search like this does the trick in HTML5-aware browsers (using Java and WebDriver, but should be usable anywhere else, too):
// looks for an element that has been marked as required on a submit attempt
WebElement elem1 = driver.findElement(By.cssSelector("input:required"));
// looks for an element that has been marked as invalid on a submit attempt
WebElement elem2 = driver.findElement(By.cssSelector("input:invalid"));
The CSS pseudo classes available are:
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…