Mac环境下,如何安装selenium并实现驱动,详见:selenium安装说明
示例1,使用官方示例测试
# 导入包
from selenium import webdriver
from selenium.webdriver.common.by import By
# 使用驱动实例开启会话
driver = webdriver.Chrome()
# 在浏览器上执行操作,导航到一个网站
driver.get("https://www.selenium.dev/selenium/web/web-form.html")
# 请求浏览器信息,实例,请求浏览器的信息,包括窗口句柄、浏览器尺寸/位置、cookie、警报等
title = driver.title
print(title)
# 建立等待策略
driver.implicitly_wait(0.5)
# 发送命令,查找元素
text_box = driver.find_element(by=By.NAME, value="my-text")
submit_button = driver.find_element(by=By.CSS_SELECTOR, value="button")
# 操作元素
text_box.send_keys("Selenium")
submit_button.click()
# 获取元素信息
message = driver.find_element(by=By.ID, value="message")
text = message.text
print(text)
# 结束会话
driver.quit()
示例2:基于白月黑羽示例测试
(1)获取元素测试demo1
from selenium import webdriver
# 导入驱动
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
# 设置属性
options = webdriver.ChromeOptions()
options.add_experimental_option('detach', True) # 不自动关闭浏览器
options.add_argument('--start-maximized') # 窗口最大化
driver = webdriver.Chrome(service=Service(r'/Users/linql/Downloads/chromedriver-mac-x64/chromedriver'), options=options)
driver.get('https://www.baidu.com')
'''
# 想要在首页输入框,输入检索内容"白月黑雨"
# 下面是通过chrome浏览器的检查,定位到这个输入框的HTML元素
#
# 选择元素方式1,根据ID方式[通常,唯一]
ID_kw = driver.find_element(By.ID,"kw")
ID_kw.send_keys("白月黑雨")
# 选择元素方式2,通过XPATH方式
xpath_kw = driver.find_element(by=By.XPATH, value="//*[@id='kw']")
xpath_kw.send_keys("白月黑雨")
# 输入"\n",表示点回车。
# 选择元素方式3,通过class属性方式[不一定唯一]
class_kw = driver.find_element(by=By.CLASS_NAME,value="s_ipt")
class_kw.send_keys("白月黑雨\n")
'''
ID_kw = driver.find_element(By.ID, "kw")
ID_kw.send_keys("白月黑雨")
'''
# 操作按钮
#
'''
ID_submit = driver.find_element(By.ID, "su")
ID_submit.click()
(2)获取元素测试demo2
from selenium import webdriver
# 导入驱动
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
# 设置属性
options = webdriver.ChromeOptions()
options.add_experimental_option('detach', True) # 不自动关闭浏览器
options.add_argument('--start-maximized') # 窗口最大化
driver = webdriver.Chrome(service=Service(r'/Users/linql/Downloads/chromedriver-mac-x64/chromedriver'), options=options)
driver.get('https://cdn2.byhy.net/files/selenium/sample1.html')
# 设置全局等待时长
# 后续执行所有的find_elements或find_element,都会采用此策略
driver.implicitly_wait(5)
# 查找同属性的多个元素
# 查找class值为plant
class_elements = driver.find_elements(By.CLASS_NAME, "plant")
for class_element in class_elements:
print(class_element.text)
print("-----")
# 查找,所有span标签
tag_elements = driver.find_elements(By.TAG_NAME, "span")
for tag_element in tag_elements:
print(tag_element.text)
print("-----"*2)
# 查找ID为container包裹下的所有span标签
tag_element = driver.find_element(By.ID,'container')
tag_element_spans = tag_element.find_elements(By.TAG_NAME,'span')
for tag_element_span in tag_element_spans:
print(tag_element_span.text)
print("-----"*3)
(3)获取输入框元素
from selenium import webdriver
# 导入驱动
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
# 设置属性
options = webdriver.ChromeOptions()
options.add_experimental_option('detach', True) # 不自动关闭浏览器
options.add_argument('--start-maximized') # 窗口最大化
driver = webdriver.Chrome(service=Service(r'/Users/linql/Downloads/chromedriver-mac-x64/chromedriver'), options=options)
driver.get('https://cdn2.byhy.net/files/selenium/test3.html')
# 设置全局等待时长
# 后续执行所有的find_elements或find_element,都会采用此策略
driver.implicitly_wait(5)
input_element = driver.find_element(By.ID,"input1")
input_element.clear()
input_element.send_keys("白月黑雨")
(4)获取整个元素对应的HTML
1)innerHTML:
从对象的起始位置到终止位置的全部内容, 不包括HTML标签。
2)outerHTML:
除了包含innerHTML的全部内容外, 还包含对象标签本身。
from selenium import webdriver
# 导入驱动
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
# 设置属性
options = webdriver.ChromeOptions()
options.add_experimental_option('detach', True) # 不自动关闭浏览器
options.add_argument('--start-maximized') # 窗口最大化
driver = webdriver.Chrome(service=Service(r'/Users/linql/Downloads/chromedriver-mac-x64/chromedriver'), options=options)
driver.get('https://cdn2.byhy.net/files/selenium/sample1.html')
# 设置全局等待时长
# 后续执行所有的find_elements或find_element,都会采用此策略
driver.implicitly_wait(5)
# 要获取整个元素对应的HTML文本内容
outerHTML_element = driver.find_element(By.ID,'container')
print(outerHTML_element.get_attribute("outerHTML"))
print('----- '*2)
innerHTML_element = driver.find_element(By.ID,'container')
print(innerHTML_element.get_attribute("innerHTML"))
(5)获取元素文本内容
from selenium import webdriver
# 导入驱动
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
# 设置属性
options = webdriver.ChromeOptions()
options.add_experimental_option('detach', True) # 不自动关闭浏览器
options.add_argument('--start-maximized') # 窗口最大化
driver = webdriver.Chrome(service=Service(r'/Users/linql/Downloads/chromedriver-mac-x64/chromedriver'), options=options)
driver.get('https://www.baidu.com')
ID_kw = driver.find_element(By.ID, "kw")
ID_kw.send_keys("白月黑雨")
# 获取元素文本内容[输入框]
ID_kw = driver.find_element(By.CLASS_NAME, 's_ipt')
input_text_Content = ID_kw.get_attribute('value')
print(input_text_Content)
# 获取元素文本内容[按钮]
s_btn = driver.find_element(By.ID, 'su')
btn_text_Content = s_btn.get_attribute('textContent')
print(btn_text_Content)
# 退出
driver.quit()