첫 번째 방법 중 몇 가지를 사용해보십시오 :
페이지가 compeltely 일부 대기 메커니즘을 사용하여 시도 렌더링되지 다음 경우
public boolean isElementPresent(By selector)
{
return driver.findElements(selector).size()>0;
}
public boolean isElementVisible(By selector){
return driver.findElement(selector).isDisplayed();
}
: :
Thread.sleep(1000);
driver.manage().timeouts().implicitlyWait(2,TimeUnit.SECONDS);
및 이 메커니즘을 fluentWait.
public WebElement fluentWait(final By locator){
Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)
.withTimeout(30, TimeUnit.SECONDS)
.pollingEvery(5, TimeUnit.SECONDS)
.ignoring(org.openqa.selenium.NoSuchElementException.class);
WebElement foo = wait.until(
new Function<WebDriver, WebElement>() {
public WebElement apply(WebDriver driver) {
return driver.findElement(locator);
}
}
);
return foo; } ;
fluentWait(By.xpath(..blablabla...)).click();
또한 jsCode 주입 할 수 DOM 모델을 통해 필요한 소자의 위치가 jQuery를
String cssSelector="blablabla";
JavascriptExecutor js = (JavascriptExecutor) driver;
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("var x = $(\'"+cssSelector+"\');");
stringBuilder.append("x.click();");
js.executeScript(stringBuilder.toString());
2를 지원하는 경우) 1) 예컨대
String js="document.getElementsByTagName('div')[34].click();"
jsCodeExecution(js);
public void jsCodeExecution(String jsCode){
JavascriptExecutor js = (JavascriptExecutor) driver;
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append(jsCode);
js.executeScript(stringBuilder.toString());
}
단계별로 단계별로 디버깅 해보고 문제가있는 곳을 정확히 확인하십시오. 호프가 도움이되기를 바랍니다.
는 또한, 난 당신이 발견 CSS 선택기를 확인하고 XPath는 (파이어 폭스에 불을 지르고에 부가 기능을) firepath에 확인하는 것이 좋습니다 :
은 html 코드를 보여? –
어떤 브라우저를 사용하고 있습니까? 나는 IE에서이 문제를 안다. Firefox에서 제대로 작동합니까? –
Firefox에서 문제가 발생했습니다. – deactivate