Rumah > Java > javaTutorial > Mengapa Selenium WebDriver Melemparkan ElementNotInteractableException, dan Bagaimana Saya Boleh Membetulkannya?

Mengapa Selenium WebDriver Melemparkan ElementNotInteractableException, dan Bagaimana Saya Boleh Membetulkannya?

Susan Sarandon
Lepaskan: 2024-11-29 12:02:14
asal
931 orang telah melayarinya

Why Does Selenium WebDriver Throw an ElementNotInteractableException, and How Can I Fix It?

Selenium WebDriver Throws ElementNotInteractableException: Penyelesaian Masalah dan Penyelesaian

Pengenalan:

ver, Selenium ElementNotInteractableException adalah biasa dihadapi apabila cuba berinteraksi dengan unsur yang tidak berada dalam keadaan sesuai untuk interaksi. Ralat ini boleh berlaku kerana beberapa sebab, termasuk:

Sebab ElementNotInteractableException:

  • Tindanan Sementara: Elemen lain mungkin sementara menyekat elemen sasaran, menjadikannya tidak boleh diakses untuk interaksi.
  • Tindanan Kekal: Elemen kekal boleh menyekat elemen sasaran secara kekal, menghalang klik.

Penyelesaian untuk ElementNotInteractableException:

1. Menggunakan Penantian Eksplisit:

    Gunakan WebDriverWait dan ExpectedConditions.elementToBeClickable untuk menunggu elemen sasaran menjadi boleh diklik sebelum berinteraksi dengannya.

2. Mengendalikan Tindanan Kekal:

    Hantar contoh WebDriver ke JavascriptExecutor dan laksanakan kaedah JavaScript click() terus pada elemen sasaran.

Isu Khusus dalam Kod Yang Diberikan:

Kod yang diberikan untuk Gmail log masuk menemui ElementNotInteractableException apabila cuba memasukkan kata laluan. Ini berkemungkinan disebabkan oleh medan kata laluan tidak diberikan sepenuhnya apabila kod cuba menghantar kunci.

Penyelesaian untuk Kod yang Diberikan:

Laksanakan penantian yang jelas untuk medan kata laluan untuk menjadi boleh diklik sebelum menghantar kunci. Berikut ialah kod yang diperbetulkan:

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)); // Explicit wait
password.sendKeys("test1");
driver.findElement(By.id("passwordNext")).click();
Salin selepas log masuk
Kod ini memperkenalkan penantian yang jelas, membenarkan medan kata laluan dipaparkan dengan betul dalam DOM HTML sebelum cuba berinteraksi dengannya, menyelesaikan isu ElementNotInteractableException dengan berkesan.

Atas ialah kandungan terperinci Mengapa Selenium WebDriver Melemparkan ElementNotInteractableException, dan Bagaimana Saya Boleh Membetulkannya?. 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