selenium元素定位以及点击事件
1.先访问页面,例如百度
运行后 火狐打开自动跳转至百度页面,并在控制台打印对应数据
代码如下:
from selenium import webdriver#导包 #打开驱动 driver = webdriver.Firefox() #定义url地址 url = "http://www.baidu.com" #访问对应网址 driver.get(url) #最大化窗口 driver.maximize_window() #控制台打印浏览器窗口的长宽 print(driver.get_window_size()) #打印网页头部信息 print(driver.title) #判断一下是不是已经跳转至百度了 if driver.title =="百度一下,你就知道": #跳转之后打印 print("已跳转") #控制台打印网页url print(driver.current_url)
2.页面跳转
从58的首页点击跳转到租房页面,再点击大兴
代码如下
from selenium import webdriver #打开游览器 driver = webdriver.Firefox() #定义网址58同城 url = "https://bj.58.com/" #访问58网址 driver.get(url) #获取句柄,打印前面的句柄 print("点击之前",driver.window_handles) #用xpath的方式获取租房在58位置 ele = driver.find_element_by_xpath(".//*[@id='fcNav']/em/a[1]") #点击租房 ele.click() #**因为点击租房后页面会跳转,再想利用自动化定位会定位不到,所以要将句柄也跳转 #获取句柄 list_window = driver.window_handles #打印句柄 print("点击之后",driver.window_handles) #将句柄切换至第二个页面 driver.switch_to.window(list_window[1]) #以文本的形式获取大兴的位置 #ele1 = driver.find_element_by_link_text("大兴") #以xpath定位大兴 ele1 = driver.find_element_by_xpath("html/body/div[6]/div[2]/div[2]/dl[1]/dd/a[6]") #点击大兴 ele1.click()
3.弹窗事件
代码运行后
from selenium import webdriver import time #打开浏览器 driver = webdriver.Firefox() #访问网址 driver.get("http://www.baidu.com") #用id的方式定位设置 ele = driver.find_element_by_id("s-usersetting-top") #点击 ele.click() #用class的方式定位搜索设置 ele1 = driver.find_element_by_class_name("setpref") #点击 ele1.click() #id定位每页50行 ele2 = driver.find_element_by_id("nr_3") #点击 ele2.click() #class定位保存设置 ele3 = driver.find_element_by_class_name("prefpanelgo") #点击 ele3.click() #关闭弹窗 #定义一个延迟,不然太快看不见了 time.sleep(5) #关闭弹窗 driver.switch_to.alert.accept()
弹出框操作
1) 进入到弹出框中
driver.switch_to.alert
2) 接收警告
accept()
3) 解散警告
dismiss()
4) 发送文本到警告框
send_keys(data)
4.下拉框点击
代码如下
from selenium import webdriver import time driver = webdriver.Firefox()#打开浏览器 driver.get("http://www.baidu.com")#访问url ele = driver.find_element_by_id("s-usersetting-top")#id定位设置 ele.click()#点击 ele1 = driver.find_element_by_xpath(".//*[@id='s-user-setting-menu']/div/a[2]")#xpath定位高级搜索 ele1.click()#点击 time.sleep(2)#延迟 ele2 = driver.find_element_by_xpath(".//*[@id='adv-setting-gpc']/div/div[1]/i[1]")#xpath定位整个下拉框 ele2.click()#点击 list_ele = driver.find_elements_by_class_name("c-select-item")#获取整个下拉框 # print(list_ele)#控制台打印下拉框 # #循环输出下拉框内容 # list_ele[2].click() for list_i in list_ele: print(list_i.text) if list_i.text =="最近一周":#对比后点击跳转 list_i.click()
5.8大元素定位
代码如下
from selenium import webdriver from selenium.webdriver.common.by import By #打开驱动 driver = webdriver.Firefox() url = "http://www.baidu.com" #url = "https://cn.bing.com/" #访问对应网址 driver.get(url) #第一种方式找元素id # ele = driver.find_element_by_id("kw") # ele.send_keys(12306) # ele = driver.find_element(By.ID,"kw") # ele.send_keys(12306) #第二种方式name # ele = driver.find_element_by_name("wd") # ele.send_keys(12306) #第三种方式class # ele = driver.find_element_by_class_name("s_ipt") # ele.send_keys(12306) #第四种方式xpath # ele = driver.find_element_by_xpath(".//*[@id='kw']") # ele.send_keys(12306) #第五种方式css # ele = driver.find_element_by_css_selector("#kw") # ele.send_keys(12306) #第六种方式link text # ele = driver.find_element_by_link_text("地图") # ele.click() #第七种partail link text # ele = driver.find_element_by_partial_link_text("地") # ele.click() #第八种方式tag # ele = driver.find_element_by_tag_name("input") # ele.send_keys(12306)
6.模拟qq登录
代码如下
from selenium import webdriver #打开游览器 driver = webdriver.Firefox() #登录QQ url = "https://qzone.qq.com/" driver.get(url) #获取元素 #定位表单元素 ele_bd = driver.find_element_by_id("login_frame") driver.switch_to.frame(ele_bd) ele = driver.find_element_by_xpath(".//*[@id='switcher_plogin']") ele.click() #输入账号 ele2 = driver.find_element_by_id("u") ele2.send_keys(766603163) #输入密码 ele3 = driver.find_element_by_id("p") ele3.send_keys("lly19845291024") ele4 = driver.find_element_by_id("login_button")#定位登录按钮 ele4.click()