[记录]Mac环境下,使用selenium操作chrome示例

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

你可能感兴趣的:(selenium,python)