1. 程式人生 > 其它 >python-selenium-瀏覽器操作、元素定位

python-selenium-瀏覽器操作、元素定位

from selenium import webdriver
from selenium.webdriver.common.by import By

option = webdriver.ChromeOptions()
option.add_experimental_option('detach', True)
driver = webdriver.Chrome(service_log_path="log.txt",executable_path="/Users/.../Downloads/chromedriver",chrome_options=option)
driver.get("http://www.taobao.com")
driver.maximize_window() # 視窗最大化
driver.set_window_size(1000,700) # 設定視窗大小,一般不用
driver.get("http://www.baidu.com")
driver.back() # 上一頁
driver.forward() # 下一頁
driver.refresh() # 重新整理頁面

print(driver.title) # 獲取頁面標題
print(driver.current_url) # 獲取網址
print(driver.current_window_handle) # 獲取視窗控制代碼

# id
ele = driver.find_element(By.ID, "kw")
print(ele.get_attribute("name"))

# class
ele = driver.find_element(By.CLASS_NAME, "s_ipt")
print(ele.get_attribute("id"))

# name
ele = driver.find_element(By.NAME, "s_ipt")
print(ele.get_attribute("id"))

# 標籤
ele = driver.find_element(By.TAG_NAME, "s_ipt")
print(ele.get_attribute("id"))

# 連結文字--精確匹配
ele = driver.find_element(By.LINK_TEXT, "設定")
print(ele.get_attribute("id"))

# 連結文字--模糊匹配
ele = driver.find_element(By.PARTIAL_LINK_TEXT, "更多")
print(ele.get_attribute("id"))

# xpath
# 絕對定位(/開頭 非常依賴於頁面順序和位置)
# 相對定位 (//開頭 不依賴頁面順序和位置)
# //標籤名[@屬性=值] 可附加邏輯運算子
# //input[@name="phone" and @datatype="m"]
# 層級定位 //div[@id="u1"//input[@name="phone"] //div[@id="u1"/input[@name="phone"]
# 函式定位 text() contains(@屬性/text(), 值) //a[text()="資料"] //a[contains(text(),"xxx")]
# 軸定位 ancestor祖先 parent父輩 preceding兄弟節點 preceding-sibling 前面的兄弟節點 following後面的節點 following-sibling節點之後的兄弟節點
# /軸名稱::節點名稱[@屬性=值] //div//td/preceding::td
ele = driver.find_element(By.XPATH, "//")
print(ele.get_attribute("id"))

# css
ele = driver.find_element(By.CSS_SELECTOR, "")
print(ele.get_attribute("id"))

driver.quit()