一.元素操作
获取文本内容(既开闭标签之间的内容)
element.text
获取属性值(获取element元素的value属性的值)element.get_attribute(value)
# 导包
from selenium import webdriver
from time import sleep
# 开浏览器
driver = webdriver.Chrome()
# 访问百度
url = 'http://www.baidu.com'
driver.get(url)
# 定位输入框
el = driver.find_element_by_id('kw')
# 输入关键字
el.send_keys('selenium')
# 定位搜索按钮
el_sub = driver.find_element_by_id('su')
el_sub.click()
el_list = driver.find_elements_by_css_selector('div[id="content_left"]>div>h3>a')
for i in el_list:
print("标题:",i.text,"内容:",i.get_attribute("href"))
sleep(5)
driver.close()
二.浏览器操作
from selenium import webdriver
from time import sleep
driver = webdriver.Chrome()
driver.get("https://wwww.baidu.com")
#窗口最大化
driver.maximize_window()
driver.find_element_by_css_selector("#kw").send_keys("测试")
driver.find_element_by_css_selector("#su").click()
sleep(3)
#后退
driver.back()
sleep(3)
#前进
driver.forward()
sleep(3)
#刷新界面
driver.refresh()
#关闭所有界面
sleep(4)
driver.quit()
三.窗口的操作
1)获取所有窗口的句柄
handles = driver.window_handlers
调用该方法会得到一个列表,在selenium运行过程中的每一个窗口都有一个对应的值存放在里面。
from selenium import webdriver
from time import sleep
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
driver.find_element_by_css_selector("#kw").send_keys("selenium")
driver.find_element_by_css_selector("#su").click()
print("点击之前:",driver.window_handles)
sleep(5)
driver.find_element_by_xpath('//*[@id="3"]/h3/a').click()
sleep(5)
print("点击之后:",driver.window_handles)
2)通过窗口的句柄进入的窗口
driver.switch_to.window(handles[n])
通过窗口句柄激活进入某一窗口
from selenium import webdriver
from time import sleep
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
driver.find_element_by_css_selector("#kw").send_keys("selenium")
driver.find_element_by_css_selector("#su").click()
sleep(5)
driver.find_element_by_xpath('//*[@id="3"]/h3/a').click()
sleep(5)
elements=driver.window_handles
print("点击之后:",elements)
#切换到第一个窗口
driver.switch_to_window(elements[0])
四.表单/框架的操作
1)什么是多表单?
实际上就是使用iframe/frame
,引用了其他页面的链接,真正的页面数据并没有出现在当前源码中,但是在浏览器中我们看到,简单理解可以使页面中开了一个窗口显示另一个页面
2)处理方法
1. 直接使用id值切换进表单
driver.switch_to.frame(value)
2. 定位到表单元素,再切换进入
el = driver.find_element_by_xxx(value)
driver.switch_to.frame(el)
from selenium import webdriver
from time import sleep
driver = webdriver.Chrome()
driver.get("https://www.126.com/")
driver.find_element_by_xpath('//*[@id="lbNormal"]').click()
#定位到表单元素
iframe = driver.find_element_by_xpath("/html/body/div[2]/div[3]/div/div[3]/div[4]/div[1]/div/iframe")
#再切换进入
driver.switch_to_frame(iframe)
#输入账号密码,点击登录
driver.find_element_by_name("email").send_keys("brontesisters")
driver.find_element_by_name("password").send_keys("1847ceab")
driver.find_element_by_xpath('//*[@id="dologin"]').click()