如何使用 Selenium Python 點選按鈕?
我們可以使用 Python 中的 Selenium Webdriver 和 click() 方法點選按鈕。首先,我們需要藉助任何定位器(如 id、name、class、XPath、tagname 或 CSS 選擇器)來識別要點選的按鈕。然後,我們必須在其上應用 click() 方法。
常用方法
在 Python 中點選 Selenium 按鈕的兩種常用方法是使用諸如 Xpath 之類的定位器以及使用 JavaScript 執行器。
-
使用 X_path 定位器:用於定位網頁上帶有文字的按鈕的屬性。
-
使用 'execute_script()' 方法:此方法使用 JavaScript 來點選按鈕。
使用 X_path 定位按鈕
Xpath(XML 路徑語言)用於定位網頁中的元素。當元素沒有易於訪問的 ID 或類名時,我們可以使用此方法。
l = driver.find_element_by_xpath("//button[text()='Check it Now']")
此方法提供了從文件根目錄到元素的完整路徑。透過使用此 X_path,我們可以根據各種屬性(文字、類)定位元素。
開啟瀏覽器和 URL
我們必須建立一個 WebDriver 物件,使我們能夠開啟一個 web 瀏覽器以及網頁的 URL。在下面的程式碼中,'get()' 函式用於在 Chrome 瀏覽器中開啟 Selenium URL('https://www.Example.com/')。
# creating an object of chrome webdriver driver = webdriver.Chrome(executable_path = r'./chromedriver') # To open selenium URL in chrome browser driver.get('https://www.Example.com')
使用 click 方法的程式碼實現
在下面的示例程式碼中,driver = webdriver.Chrome() 函式使用 Selenium 初始化瀏覽器,並提供 chromedriver 可執行檔案的路徑。找到按鈕後,click() 方法會在按鈕上執行點選操作。
from selenium import webdriver # set chromodriver.exe path driver = webdriver.Chrome(executable_path="C:\chromedriver.exe") # implicit wait driver.implicitly_wait(0.5) #maximize browser driver.maximize_window() # launch URL driver.get("https://tutorialspoint.tw/index.htm") #identify element l =driver.find_element_by_xpath("//button[text()='Check it Now']") # perform click l.click() print("Page title is: ") print(driver.title) # close browser driver.quit()
使用 'execute_script()' 方法
Selenium 可以藉助 execute_script() 和 arguments[0].click() 方法執行 JavaScript 等命令,並且元素定位器 (X_path_) 作為引數傳遞給此方法。
driver.execute_script("arguments[0].click();", l);
使用 execute 方法的程式碼實現
在下面的示例程式碼中,driver.execute_script() 函式使用 JavaScript 來點選按鈕,其中表達式 "arguments[0].click();" 點選傳遞的元素。
from selenium import webdriver # set chromodriver.exe path driver = webdriver.Chrome(executable_path="C:\chromedriver.exe") # implicit wait driver.implicitly_wait(0.5) #maximize browser driver.maximize_window() # launch URL driver.get("https://tutorialspoint.tw/index.htm") # identify element l =driver.find_element_by_xpath("//button[text()='Check it Now']") # perform click with execute_script driver.execute_script("arguments[0].click();", l); print("Page title is: ") print(driver.title) # close browser driver.quit()