Saya sedang mengerjakan webscraper untuk https://www.grailed. com/designers/jordan-brand/hi-top-sneakers. Ketika halaman dibuka popup untuk login muncul. Mencari melalui desain web saya dapat menemukan elemen X untuk menutup browser seperti: temp = WebDriverWait(driver, 10).until(ec.visibility_of_element_located((By.CLASS_NAME, 'close'))). Jika saya masuk lebih ke ini ada elemen dan. Saya telah mencoba menggunakan .click() pada elemen (dengan kelas 'close'), serta elemen svg dan path. Tak satu pun dari ini menutup kotak, dan tidak ada tombol atau elemen lain semacam ini untuk X. Apa yang dapat saya lakukan untuk menutup popover ini? Saya tidak yakin apakah saya perlu menemukan elemen tombol untuk diklik, tetapi saya tidak dapat menemukannya seperti itu. Saya telah melihat beberapa pertanyaan dan artikel (https://stackoverflow.com/questions/61923909/trying-to-close-popover-python-selenium-glassdoor, https://sqa.stackexchange.com/questions/5310 /how-to-close-pop-up-window-in-selenium-webdriver, https://saucelabs.com/resources/articles/the-selenium-click-command) tetapi tidak dapat menemukan solusi.

1
Eric Hasegawa 2 Juli 2020, 18:46

2 jawaban

Jawaban Terbaik

Anda dapat melakukan klik dua kali dengan tindakan untuk menyelesaikan masalah ini

WebDriverWait(driver, 20).until(ec.visibility_of_element_located((By.XPATH, 
   '//a[@class = 'close']/*[name()='svg']')))

close =  driver.find_element_by_xpath("//a[@class = 'close']/*[name()='svg']")

actionChains = ActionChains(driver)
actionChains.double_click(close).perform()

Dan kode Java untuk ini:

new WebDriverWait(driver, 20)
                .until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//a[@class = 'close']/*[name()='svg']")));

WebElement close = driver.findElement(By.xpath("//a[@class = 'close']/*[name()='svg']"));

Actions action = new Actions(driver);
action.doubleClick(close).build().perform();
1
Norayr Sargsyan 3 Juli 2020, 05:55

Saya sendiri sebenarnya baru saja mengalami masalah yang sama. Solusi di atas tidak berhasil untuk saya, jadi saya akan memposting apa yang saya lakukan di sini:

Pada dasarnya, saya mengklik koordinat alih-alih dengan mencoba menemukan elemen tombol.

Catatan: beberapa halaman web tidak menampilkan popup sampai Anda mencoba mengklik sesuatu yang lain, jadi saya harus mencoba mengklik elemen lain terlebih dahulu. Jika Anda perlu melakukannya, pastikan untuk menunggu sekitar satu detik hingga munculan dimuat.

Kemudian, Anda dapat melakukan sisanya melalui ActionChain:

elem = driver.find_element_by_class_name("CLASSNAME")    
ac = ActionChains(driver)
ac.move_to_element(elem).click().perform()

Anda ingin membungkus ini dalam blok coba-kecuali untuk keamanan ekstra.

Penghargaan untuk Dirk Bergstrom karena menyediakan bagian dari solusi di sini: Mengklik koordinat tanpa elemen pengenal

1
Kevin Ayala 16 Oktober 2020, 11:14