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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM