Xử Lý Exception ElementClickInterceptedException

Xử Lý Exception ElementClickInterceptedException

ElementClickInterceptedException thường hay xảy ra khi user cố gắng thực hiện thao tác click() vào một element như button, radio button hoặc là checkbox…
Nguyên nhân thực sự của exception này là element bạn muốn click bị “che phủ” bởi một element khác trên webpage
Chẳng hạn khi bạn muốn click vào một element nào đó bên dưới một dropdown/ Submenu thì bạn có thể gặp phải lỗi này. Hoặc đôi khi có một vài pop-ups sẽ gây ra việc “che phủ” lên element, vì thế khi bạn cố gắng click vào những element bị che phủ như thế này thì sẽ nhận được một exception Sometimes some model pop-ups also can cause this kind of overlay on the element, so when you try to click such kind of element then you will receive an element not clickable exception.

Ở ví dụ dưới đây, mình sẽ demo cho các bạn trường hợp cụ thể ( các bạn nhớ demo lại để nhớ lâu hơn nhé)

II. Nguyên nhân dẫn tới ElementClickInterceptedException

  • Tốc độ xử lý code của Selenium nhanh hơn phản hồi của trang web.
  • Tốc độ của internet chậm làm cho trang web load chậm.
  • Developers có thể add một parent element chồng lên element mà bạn muốn click.

III. Giải pháp

Sử dụng JavaScriptExecutor.
				
						driver.findElement(By.name("q")).sendKeys("automation");
	WebElement searchButton = driver.findElement(By.xpath("(//input[@value='Google Search'])[2]"));
	JavascriptExecutor js = (JavascriptExecutor)driver;
	js.executeScript("arguments[0].click()", searchButton);
				
			

Hoặc các bạn có thể viết ngắn gọn như sau: 

				
					driver.findElement(By.name("q")).sendKeys("automation");
JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("$x(\"(//input[@value='Google Search'])[2]\").click()");