WebDriverException: तत्व बिंदु पर क्लिक करने योग्य नहीं है (x, y)
यह एक विशिष्ट org.openqa.selenium.WebDriverException है जो java.lang.RuntimeException को बढ़ाती है ।
इस अपवाद के क्षेत्र हैं:
- 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
आपके व्यक्तिगत उपयोग के बारे में, त्रुटि यह सब बताती है:
WebDriverException: Element is not clickable at point (x, y). Other element would receive the click
आपके कोड ब्लॉक से यह स्पष्ट है कि आपने wait
जैसा भी परिभाषित किया है, WebDriverWait wait = new WebDriverWait(driver, 10);
लेकिन आप click()
उस तत्व को कॉल कर रहे हैं, जो ExplicitWait
आने के पहले तत्व पर चलता है until(ExpectedConditions.elementToBeClickable)
।
समाधान
त्रुटि Element is not clickable at point (x, y)
विभिन्न कारकों से उत्पन्न हो सकती है। आप उन्हें निम्नलिखित प्रक्रियाओं में से किसी से भी संबोधित कर सकते हैं:
1. मौजूद जावास्क्रिप्ट या AJAX कॉल के कारण क्लिक नहीं किया गया तत्व
Actions
कक्षा का उपयोग करने का प्रयास करें :
WebElement element = driver.findElement(By.id("navigationPageButton"));
Actions actions = new Actions(driver);
actions.moveToElement(element).click().build().perform();
2. तत्व क्लिक नहीं हो रहा है क्योंकि यह व्यूपोर्ट के भीतर नहीं है
JavascriptExecutor
व्यूपोर्ट में तत्व लाने के लिए उपयोग करने का प्रयास करें :
WebElement myelement = driver.findElement(By.id("navigationPageButton"));
JavascriptExecutor jse2 = (JavascriptExecutor)driver;
jse2.executeScript("arguments[0].scrollIntoView()", myelement);
3. तत्व को क्लिक करने से पहले पृष्ठ ताज़ा हो रहा है।
इस स्थिति में ExplicitWait अर्थात WebDriverWait को बिंदु 4 में बताए अनुसार प्रेरित करें ।
4. तत्व DOM में मौजूद है लेकिन क्लिक करने योग्य नहीं है।
इस स्थिति में, क्लिक करने योग्य तत्व के लिए सेट के साथ ExplicitWait को प्रेरित करें :ExpectedConditions
elementToBeClickable
WebDriverWait wait2 = new WebDriverWait(driver, 10);
wait2.until(ExpectedConditions.elementToBeClickable(By.id("navigationPageButton")));
5. तत्व मौजूद है लेकिन अस्थायी ओवरले है।
इस मामले में, ओवरले के अदृश्य होने के लिए सेट के ExplicitWait
साथ प्रेरित करें ।ExpectedConditions
invisibilityOfElementLocated
WebDriverWait wait3 = new WebDriverWait(driver, 10);
wait3.until(ExpectedConditions.invisibilityOfElementLocated(By.xpath("ele_to_inv")));
6. तत्व मौजूद है लेकिन स्थायी ओवरले है।
JavascriptExecutor
सीधे तत्व पर क्लिक भेजने के लिए उपयोग करें ।
WebElement ele = driver.findElement(By.xpath("element_xpath"));
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", ele);