나는 부패한 요소에 대해 읽었으며 여전히 혼란 스럽다. 예를 들어, 다음과 같은 작동하지 않습니다, 맞습니까?진부한 부패 된 요소
public void clickFoo(WebElement ele) {
try {
ele.click();
} catch (StaleElementReferenceException ex) {
ele.click();
}
}
ele가 부실한 경우 부실로 남아 있기 때문입니다. 가장 좋은 방법은 driver.findElement (By)를 다시 실행하는 것입니다.하지만이 예제에서 볼 수 있듯이 xpath는 없습니다. ele.getAttribute ("id")를 시도해보고 사용할 수는 있지만 요소에 ID가없는 경우에도 작동하지 않습니다. 이 메서드를 호출하는 모든 메서드는 try/catch를 둘 필요가 있습니다. 이는 실행 가능하지 않을 수 있습니다.
요소가 재생 될 수있는 다른 방법이 있습니까? 또한, id가 있다고 가정하면, id는 요소가 부실화 된 후에도 동일하게 유지됩니까? WebElement 객체 ele의 내용이 부실되면 어떻게됩니까?
(자바 이클립스)
감사합니다. 나는 그것을 이해합니다. 일부 메소드가 xpath가 아닌 요소를 취하는 것입니다. 그리고 일부 메소드는 페이지 객체 @FindBy()를 사용합니다. 이것은 당신이 말한 것과 유사합니다. 하지만 일부 요소는 런타임까지 알려지지 않았습니다 (예를 들어 특정 사무실의 div를 찾아서 div.findBy를 사용해야하는 경우 ... 요소에 대한 xpath를 더 일찍 알기 위해 계획을 세워야한다고 생각합니다 (또는 id 또는 무엇이든) – Tony
요소를 취하는 메서드의 경우 로케이터를 사용하여 요소를 찾은 다음 메서드에 전달할 수 있습니다. 특정 사무실의 요소를 찾아야하는 시나리오가있는 경우, – JeffC
어쨌든 ...이 답변이 도움이된다면, 그것을 upvote하십시오. 귀하의 질문에 대답했다면, 답변으로 받아들이십시오. [this ] (// stackoverflow.com/help/someone-answers) 어떻게 upvote하고 대답을 받아들이는지에 대한 더 많은 정보를 얻으려면 – JeffC