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

 

posted @ 2021-03-08 17:21  Python从入门到放弃o  阅读(6782)  评论(0编辑  收藏  举报