Apabila web mengikis halaman HTML dinamik, menggunakan WebDriverment_presence_ofEC.presence_ofEC () membolehkan kita menunggu a elemen tertentu untuk muncul sebelum mendapatkan semula data. Biasanya, kami menentukan elemen mengikut ID mereka. Walau bagaimanapun, dalam senario tertentu, kita mungkin perlu menentukan elemen mengikut kelasnya.
Kod asal cuba mencari elemen mengikut kelasnya menggunakan EC.presence_of_element_located((By.class, "ng-binding ng- skop")):
element = WebDriverWait(driver,100).until(EC.presence_of_element_located((By.class, "ng-binding ng-scope")))
Walau bagaimanapun, sintaks ini tidak akan berfungsi kerana ia tidak mematuhi Peraturan Sintaks Pencari WebDriver. Kaedah By.class tidak menyokong berbilang nama kelas sebagai argumen.
Untuk menyelesaikan isu ini, kita boleh menggunakan presence_of_element_located( ) bersama-sama dengan By.CSS_SELECTOR atau By.XPATH untuk menentukan kedua-dua ID dan atribut kelas sebagai berikut:
Menggunakan CSS_SELECTOR:
element = WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.CSS_SELECTOR, ".ng-binding.ng-scope#tabla_evolucion")))
Menggunakan XPATH:
element = WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.XPATH, "//*[@class='ng-binding ng-scope' and @id='tabla_evolucion']")))
Dengan menggabungkan ID dan kelas atribut, kita boleh mencari dengan tepat elemen yang diingini walaupun hanya kelas ditentukan.
Atas ialah kandungan terperinci Bagaimana untuk Menggunakan EC.presence_of_element_located() Selenium dengan Berbilang Nama Kelas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!