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()