WebDriverException: Öğe (x, y) noktasında tıklanabilir değil
Bu, java.lang.RuntimeException'ı genişleten tipik bir org.openqa.selenium.WebDriverException'dır .
Bu istisnanın alanları şunlardır:
- BASE_SUPPORT_URL :
protected static final java.lang.String BASE_SUPPORT_URL
- DRIVER_INFO :
public static final java.lang.String DRIVER_INFO
- SESSION_ID :
public static final java.lang.String SESSION_ID
Kişisel kullanım durumunuz hakkında, hata her şeyi anlatır:
WebDriverException: Element is not clickable at point (x, y). Other element would receive the click
Kod bloğunuzdan, wait
olarak tanımladığınız WebDriverWait wait = new WebDriverWait(driver, 10);
ancak olduğu gibi devreye click()
girmeden önce öğedeki yöntemi çağırdığınız açıktır .ExplicitWait
until(ExpectedConditions.elementToBeClickable)
Çözüm
Hata Element is not clickable at point (x, y)
, farklı faktörlerden kaynaklanabilir. Bunları aşağıdaki prosedürlerden biriyle ele alabilirsiniz:
1. Mevcut JavaScript veya AJAX çağrıları nedeniyle öğe tıklanmıyor
Actions
Sınıfı kullanmayı deneyin :
WebElement element = driver.findElement(By.id("navigationPageButton"));
Actions actions = new Actions(driver);
actions.moveToElement(element).click().build().perform();
2. Öğe, Görüntü Alanı içinde olmadığından tıklanmıyor
JavascriptExecutor
Öğeyi Görüntü Alanı'na getirmek için kullanmayı deneyin :
WebElement myelement = driver.findElement(By.id("navigationPageButton"));
JavascriptExecutor jse2 = (JavascriptExecutor)driver;
jse2.executeScript("arguments[0].scrollIntoView()", myelement);
3. Öğe tıklanabilir hale gelmeden önce sayfa yenileniyor.
Bu durumda 4. maddede belirtildiği gibi ExplicitWait yani WebDriverWait'i başlatın .
4. Öğe DOM'da mevcut ancak tıklanabilir değil.
Bu durumda , öğenin tıklanabilir olması için ExplicitWait'i olarak ExpectedConditions
ayarlayarak indükleyin elementToBeClickable
:
WebDriverWait wait2 = new WebDriverWait(driver, 10);
wait2.until(ExpectedConditions.elementToBeClickable(By.id("navigationPageButton")));
5. Öğe mevcuttur, ancak geçici Bindirmeye sahiptir.
Bu durumda, Yerleşimin görünmez olması için ayarı olarak teşvik ExplicitWait
edin .ExpectedConditions
invisibilityOfElementLocated
WebDriverWait wait3 = new WebDriverWait(driver, 10);
wait3.until(ExpectedConditions.invisibilityOfElementLocated(By.xpath("ele_to_inv")));
6. Öğe mevcuttur, ancak kalıcı Yerleşime sahiptir.
Tıklamayı JavascriptExecutor
doğrudan öğeye göndermek için kullanın .
WebElement ele = driver.findElement(By.xpath("element_xpath"));
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", ele);