Không thể nhận được selen để nhấp vào nút
Hình ảnh phần tử kiểm tra của trang web Xem thêm trong Hình ảnh chiều sâu Đoạn mã của tôi
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from time import sleep
import requests
///
excel = driver.find_element_by_name('Excel')
excel.click()
Sau đó tôi nhận được điều này khi tôi cố gắng chạy nó, mọi sự trợ giúp sẽ được đánh giá cao
NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"[name="Excel"]"}
Trả lời
Các phần tử mong muốn là một góc yếu tố, do đó bấm vào yếu tố bạn cần phải tạo ra WebDriverWait cho element_to_be_clickable()
và bạn có thể sử dụng một trong những điều sau Chiến lược Locator :
Sử dụng
CSS_SELECTOR
:WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button[mat-button] > span.mat-button-wrapper span"))).click()
Sử dụng
XPATH
:WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[@mat-button]/span[@class='mat-button-wrapper']//span[text()='Excel']"))).click()
Lưu ý : Bạn phải thêm các lần nhập sau:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
driver.find_element_by_name ('Excel') chọn một thẻ có tên = 'Excel'.
Ví dụ: nó sẽ tìm thấy một thẻ như sau:
<div name='Excel'>Hello</div>.
CSS tương đương cho find_element_by_name là [name = "Excel"].
Từ ảnh của phần tử kiểm tra trang web của bạn, có vẻ như bạn đang cố gắng tìm một phần tử có văn bản 'Excel' bên trong div, vì vậy, thay vào đó, bạn cần sử dụng hàm sau:
driver.find_element_by_link_text('Excel')
Hy vọng rằng đã giúp!
Để biết thêm về trình duyệt web Python selen, hãy sử dụng liên kết này . Nó đã giúp rất nhiều cho tôi!