Rumah > Java > javaTutorial > Mengapa Selenium Membuang \'ElementNotInteractableException\' Semasa Automasi Log Masuk Gmail?

Mengapa Selenium Membuang \'ElementNotInteractableException\' Semasa Automasi Log Masuk Gmail?

Mary-Kate Olsen
Lepaskan: 2024-11-26 09:21:09
asal
451 orang telah melayarinya

Why Does Selenium Throw

"ElementNotInteractableException" Dilemparkan oleh Selenium WebDriver

Apabila cuba mengautomasikan log masuk Gmail dengan Selenium WebDriver, pengguna mungkin menghadapi ralat "ElementNotInteractableException". Ralat ini menunjukkan bahawa elemen tertentu pada halaman web tidak berada dalam keadaan yang membenarkan interaksi.

Punca dan Penyelesaian

Punca dan penyelesaian biasa untuk "ElementNotInteractableException" termasuk :

  • Tindan Sementara: Jika elemen lain bertindih dengan elemen sasaran, penantian eksplisit boleh didorong menggunakan "WebDriverWait" dalam kombinasi dengan ExpectedCondition sebagai "invisibilityOfElementLocated" atau "elementToBeClickable" untuk menunggu tindanan hilang sebelum berinteraksi dengan elemen.
  • Kekal Tindanan: Apabila tindanan kekal, hantar contoh WebDriver ke JavascriptExecutor dan pelaksanaan "arguments[0].click();" boleh digunakan untuk melaksanakan operasi klik.

Menyelesaikan Ralat dalam Konteks Ini

Dalam kod yang disediakan, ralat disebabkan oleh kekurangan menunggu untuk medan Kata Laluan dipaparkan dengan betul dalam DOM HTML. Menambah penantian eksplisit menggunakan "WebDriverWait" menyelesaikan isu:

System.setProperty("webdriver.gecko.driver","C:\Users\Ruchi\workspace2\SeleniumTest\jar\geckodriver-v0.17.0-win64\geckodriver.exe");
WebDriver driver = new FirefoxDriver();
driver.manage().window().maximize();
String url = "https://accounts.google.com/signin";
driver.get(url);
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
WebElement email_phone = driver.findElement(By.xpath("//input[@id='identifierId']"));
email_phone.sendKeys("[email protected]");
driver.findElement(By.id("identifierNext")).click();
WebElement password = driver.findElement(By.xpath("//input[@name='password']"));
WebDriverWait wait = new WebDriverWait(driver, 20);
wait.until(ExpectedConditions.elementToBeClickable(password));
password.sendKeys("test1");
driver.findElement(By.id("passwordNext")).click();
Salin selepas log masuk

Atas ialah kandungan terperinci Mengapa Selenium Membuang \'ElementNotInteractableException\' Semasa Automasi Log Masuk Gmail?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan