Element not clickable
#21
Отправлено 26 августа 2013 - 14:36
#22
Отправлено 26 августа 2013 - 14:54
Может у него в CSS что-нито интересное прописывается. Покажите его стиль после того как он не отображается на страницеНет, это вообще не вариант, не знаю почему, но элемент эти проверки проходит, но не пропадает
#23
Отправлено 26 августа 2013 - 15:18
Прикрепленные файлы
#24
Отправлено 26 августа 2013 - 16:28
1. Дождаться элемента.
2. Дождаться его видимости.
3. Дождаться его невидимости.
4.????
5. Profit
В случае фейла пунктов 2 или 3, прочитайте информационный блок сверху топика, и скажите нам уже версию селениума/браузера/драйвера.
#25
Отправлено 26 августа 2013 - 16:46
try { driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);//Ждем этот элемент в течении 3 сек чтобы не затормаживать кейс, если вдруг элемента нет. Можно накать и явную ждалку - результат тотже WebElement kload=driver.findElement(By.xpath("//div[@class='k-loading-image']")); System.out.println(kload.isDisplayed()); if (kload.isDisplayed()) { //Проверяем видимость (new WebDriverWait(driver, Pause)) .until(ExpectedConditions.invisibilityOfElementLocated/stalenessOf(By.xpath("//div[@class='k-loading-image']")));//Если видим, ждем пропадание/невидимости } } catch (NoSuchElementException e) {} //ловим експешн, если вдруг элемент не обнаружен driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);//Устанавливает обратно дефолтный таймаут
#26
Отправлено 26 августа 2013 - 17:15
WebDriverWait wait = new WebDriverWait(driver, 10); WebElement kload = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div[@class='k-loading-image']")); wait.until(new ExpectedCondition<Boolean>() { @Override public Boolean apply(WebDriver arg0) { return !kload.isDisplayed(); } });
#27
Отправлено 27 августа 2013 - 08:57
Такой вариант выкидывает ошибку:
org.openqa.selenium.StaleElementReferenceException: stale element reference: element is not attached to the page document
WebDriverWait wait = new WebDriverWait(driver, 20); final WebElement kload= wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div[@class='k-loading-image']"))); wait.until(new ExpectedCondition<Boolean>() {//в этой строке ошибка @Override public Boolean apply(WebDriver arg0) { return !(kload.isDisplayed()); } });
Такой вариант выкидывает NoSuchElement, т к пытается найти kload, а его уже нет
WebDriverWait wait = new WebDriverWait(driver, 20); WebElement kload= wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div[@class='k-loading-image']"))); wait.until(new ExpectedCondition<Boolean>() { @Override public Boolean apply(WebDriver arg0) { return !(driver.findElement(By.xpath("//div[@class='k-loading-image']")).isDisplayed());//Вот здесь ошибка } });
#28
Отправлено 27 августа 2013 - 09:11
WebDriverWait wait = new WebDriverWait(driver, 20); final WebElement kload= wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div[@class='k-loading-image']"))); wait.until(ExpectedConditions.stalenessOf(kload));ЗЫ: компилирую в голове, синтаксические ошибки не исключаю.
#29
Отправлено 27 августа 2013 - 10:30
#30
Отправлено 27 августа 2013 - 11:08
В случае фейла
пунктов 2 или 3, прочитайте информационный блок сверху топика, и укажите версию_селениума/браузера/драйвера+код+полную_трассу.
#31
Отправлено 27 августа 2013 - 11:43
Chrome Версия 29.0.1547.57 m
Chromedriver=2.0
public void ProjectSelectMethod(String projectclick, String projectname) throws InterruptedException, MyBugException, AWTException { int Pause=30; driver.findElement(By.xpath(projectclick)).click(); (new WebDriverWait(driver, Pause)) .until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.cssSelector(".k-grid-string-column"))); (new WebDriverWait(driver, Pause)) .until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector(".k-grid-string-column"))); //Thread.sleep(2000); driver.findElement(By.xpath("//input[@class='k-textbox'][@value='']")).click(); driver.findElement(By.xpath("//input[@class='k-textbox'][@value='']")).sendKeys(projectname); driver.findElement(By.xpath("//button[@data-commandname='searchBySubstr']")).click(); WebDriverWait wait = new WebDriverWait(driver, 20); final WebElement kload = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div[@class='k-loading-image']"))); wait.until(new ExpectedCondition<Boolean>() { // Вот здесь at DocumentRegistration.ProjectSelect.ProjectSelectMethod(ProjectSelect.java:96) @Override public Boolean apply(WebDriver arg0) { return !kload.isDisplayed(); } }); /* driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); (new WebDriverWait(driver, Pause)) .until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.cssSelector(".k-grid-string-column"))); (new WebDriverWait(driver, Pause)) .until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.xpath("//td[.='тест1']"))); Thread.sleep(3000); ElementPolling polling=new ElementPolling(driver); String elementPath="//td[.='"+projectname+"']"; int timeout=60; polling.ElementPolling(elementPath, timeout); */ driver.findElement(By.xpath("//td[.='"+projectname+"']")).click(); driver.findElement(By.xpath("//button[@data-commandname='accept']")).click(); Thread.sleep(1000);
}
org.openqa.selenium.StaleElementReferenceException: stale element reference: element is not attached to the page document (Session info: chrome=29.0.1547.57) (Driver info: chromedriver=2.0,platform=Windows NT 6.1 SP1 x86_64) (WARNING: The server did not provide any stacktrace information) Command duration or timeout: 41 milliseconds For documentation on this error, please visit: http://seleniumhq.org/exceptions/stale_element_reference.html Build info: version: '2.35.0', revision: 'c916b9d', time: '2013-08-12 15:42:01' System info: os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.7.0' Session ID: ee131a91395abfaeefd890e9d41b6bd9 Driver info: org.openqa.selenium.chrome.ChromeDriver Capabilities [{platform=XP, acceptSslCerts=true, javascriptEnabled=true, browserName=chrome, chrome={chromedriverVersion=2.0}, rotatable=false, locationContextEnabled=true, version=29.0.1547.57, cssSelectorsEnabled=true, databaseEnabled=true, handlesAlerts=true, browserConnectionEnabled=false, nativeEvents=true, webStorageEnabled=true, applicationCacheEnabled=false, takesScreenshot=true}] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Unknown Source) at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:191) at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:145) at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:554) at org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:268) at org.openqa.selenium.remote.RemoteWebElement.isDisplayed(RemoteWebElement.java:320) at DocumentRegistration.ProjectSelect$1.apply(ProjectSelect.java:99) at DocumentRegistration.ProjectSelect$1.apply(ProjectSelect.java:1) at org.openqa.selenium.support.ui.FluentWait.until(FluentWait.java:208) at DocumentRegistration.ProjectSelect.ProjectSelectMethod(ProjectSelect.java:96) at DocumentRegistration.AktSAgentom.AktSAgentomTest(AktSAgentom.java:114) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28) at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:30) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28) at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:30) at org.junit.runners.ParentRunner.run(ParentRunner.java:300) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
#32
Отправлено 27 августа 2013 - 12:57
Да и chromedriver не мешало бы обновить - актуальная версия на данный момент 2.2.WebDriverWait wait = new WebDriverWait(driver, 20); final WebElement kload= wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div[@class='k-loading-image']"))); wait.until(ExpectedConditions.stalenessOf(kload));
#33
Отправлено 29 февраля 2016 - 12:57
Где почитать не подскажу, я использую такую конструкцию (Ruby)
xpath_value - xpath элмента, что нужно удалить@driver.execute_javascript("element = document.evaluate(\"" + xpath_value + "\", document, null, XPathResult.ANY_TYPE, null).iterateNext();if (element !== null) {element.parentNode.removeChild(element);};")
Спасибо большое!
Отлично помогло на странице, где присутствуют дропдауны плагина select2.
При негативном тестировании (несуществующее значение #select2 в поле поиска) кнопка Save была скрыта select2-drop-mask.
P.S. В силу использования Capybara
@driver.execute_javascript
нужно заменить на
page.execute_script
#34
Отправлено 03 апреля 2016 - 10:10
Я также столкнулся с такой же проблемой. Тема конечно давняя, но если вдруг кто-то еще не разобрался, вот еще один вариант решения этой ситуации. Можно также погуглить и найти вот такой ответ: http://stackoverflow...-at-point-error
Вот кратенько то, что должно быть написано для клика по элементу:
WebElement webElem = driver.findElement(By.something); Actions action = new Actions(driver); action.moveToElement(webElem).click().perform();
#35
Отправлено 12 января 2017 - 07:40
Часто спасает обычное ожидание element_to_be_clickable
Пример (псевдокод через хэлперы, но идея проста):
1. wait_helper.is_clickable(button) - ждем пока элемент станет кликабельным
2. click_element_helper.click_element(button) - кликаем по нему
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных