selenium基本

selenium详解

setTimeout(function(){debugger},5000)冻结悬停的按钮下拉元素
ctl+shift+c 直接选取该元素
from selenium import webdriver
import time
#创建一个浏览器
driver = webdriver.Chrome()

#浏览器最大化
driver.maximize_window()
# #最小化浏览器
# driver.minimize_window()

# #打开指定的网页(URL就是指网址)
driver.get("http://www.baidu.com")

#定位内容文本框
textElement = driver.find_element_by_id("kw")
#输入内容
textElement.send_keys("五洲 赵静")

#定位 百度一下 按钮
buttonElement = driver.find_element_by_id('su')
#点击
buttonElement.click()

获取输入框的值

元素文本的值

from selenium import webdriver
import time
#创建一个浏览器
driver = webdriver.Chrome()

#浏览器最大化
driver.maximize_window()
# #最小化浏览器
# driver.minimize_window()

# #打开指定的网页(URL就是指网址)
driver.get("http://www.baidu.com")

# #定位内容文本框
# textElement = driver.find_element_by_id("kw")
# #输入内容
# textElement.send_keys("五洲 赵静")

#选择 输入框 然后获取输入框 的name 属性的值
# name = driver.find_element_by_id("kw").get_attribute("class")
# print(name)

#判断元素是否可见  返回的是 T 或者 F
tf = driver.find_element_by_id("kw").is_displayed()
print(tf)

# #定位 百度一下 按钮
# buttonElement = driver.find_element_by_id('su')
# #点击
# buttonElement.click()

#text获取元素的文本内容
# driver.find_element_by_id("s-bottom-layer-right").text

# <input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">

#关闭浏览器
driver.quit()

元素定位显示等待隐式等待,鼠标操作

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
#打开浏览器
driver = webdriver.Firefox()
#等待页面加载,操作10s报出异常
driver.implicitly_wait(10)
driver.maximize_window()

#打开网址
driver.get("http://www.baidu.com")

#定位 设置 按钮
# st = driver.find_element_by_id("s-usersetting-top")

#ActionChains中需要指定要操作的driver,move_to_element后面要写让在那个元素上悬停,而perform()可以看成是提交这次操作
# ActionChains(driver).move_to_element(st).perform()


#在搜索框设置鼠标右键操作
# sd = driver.find_element_by_id("kw")
# ActionChains(driver).context_click(sd).perform()

#拖动
# baidu = driver.find_element_by_xpath('//ul[@id="hotsearch-content-wrapper"]/li[1]')
# ActionChains(driver).drag_and_drop(baidu, sd).perform()

#鼠标 双击 操作
driver.find_element_by_id('kw').send_keys("马大师")
# 双击 百度一下 按钮
baudubutto = driver.find_element_by_id('su')
ActionChains(driver).double_click(baudubutto).perform()

键盘操作

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time

driver = webdriver.Chrome()
driver.implicitly_wait(10)
driver.maximize_window()

#打开网页
driver.get("http://www.baidu.com")

#定位输入框 输入内容
driver.find_element_by_id("kw").send_keys("美团外卖")

time.sleep(3)

#删除多输入的 数字2
driver.find_element_by_id("kw").send_keys(Keys.BACK_SPACE)

# 空格Keys.SPACE
# driver.find_element_by_id("kw").send_keys(Keys.SPACE)
# driver.find_element_by_id("kw").send_keys("接新单了")

# #全选
# driver.find_element_by_id("kw").send_keys(Keys.CONTROL, 'a')
#
# #剪切
# driver.find_element_by_id("kw").send_keys(Keys.CONTROL, 'x')
# time.sleep(2)
#
# #粘贴
# driver.find_element_by_id("kw").send_keys(Keys.CONTROL, 'v')
#
# #回车操作
# driver.find_element_by_id("kw").send_keys(Keys.ENTER)

显示等待

#元素等待:显示等待 隐式等待
#显示等待是等待加载页面上的单个元素,显示等待一般应用在界面查询内容比较多,加载时间特别长的时间
#隐式等待是等整个页面全部加载完成  implicitly_wait(10)

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

#打开浏览器
driver = webdriver.Firefox()
#等待页面加载,操作10s报出异常
driver.implicitly_wait(10)  #隐式等待
driver.maximize_window()

driver.get("http://www.baidu.com")

#显示等待:driver 代表的是浏览器对象,10代表的时候最大超时时间,超过10s就报错,0.5s指定的是步长默认就是0.5 可以不写,
#(By.ID, 'kw') 元素定位的方式和内容,要写在一个元组中传递给presence_of_element_located
a = WebDriverWait(driver, 10, 0.5).until(EC.presence_of_element_located((By.ID, 'kw')))
a.send_keys('王二麻子')

切换句柄

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
driver = webdriver.Chrome()
driver.implicitly_wait(10)
driver.maximize_window()

driver.get("https://www.jd.com/")

#获取当前窗口的句柄  句柄就像窗口的身份证一样可以唯一的标识我们的窗口
jdhandle = driver.current_window_handle


#点击 酒店
driver.find_element_by_css_selector('ul[class="J_tab_head service_list"] a[href="//hotel.jd.com/"]').click()

#获取当前浏览器所有的窗口句柄 窗口句柄存放在列表中
winhands = driver.window_handles
print(winhands)

#方法一:在点击酒店后会产生两个窗口,我们和刚开始打开的窗口句柄判断,如果不相等则是刚打开的窗口
# #切换句柄
# for one in winhands:
#     if one == jdhandle:
#         continue
#     else:
#         #切换到新打开的窗口句柄
#         driver.switch_to.window(one)
#         #进入酒店选择界面 输入城市
#         driver.find_element_by_id('city').clear()
#         driver.find_element_by_id('city').send_keys("西安")
#         #点击
#         driver.find_element_by_xpath('//ul[@class="suggest-ul"]/li[1]').click()
#
#         time.sleep(3)
#         #点击 搜索酒店 按钮
#         driver.find_element_by_id("searchBtn").click()

#方法二:获取所有的窗口的句柄是存在列表中,列表中的最后一个元素就是新打开的窗口的句柄
driver.switch_to.window(winhands[-1])
#进入酒店选择界面 输入城市
driver.find_element_by_id('city').clear()
driver.find_element_by_id('city').send_keys("西安")
#点击
driver.find_element_by_xpath('//ul[@class="suggest-ul"]/li[1]').click()

time.sleep(3)
#点击 搜索酒店 按钮
driver.find_element_by_id("searchBtn").click()

断言模块加酒店案列

#京东商城 练习 按照条件筛选获取所有的酒店 名字

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
##断言模块EC
from selenium import webdriver
import time


driver = webdriver.Chrome()
driver.implicitly_wait(10)
driver.maximize_window()

driver.get("https://www.jd.com/")

#获取当前窗口的句柄  句柄就像窗口的身份证一样可以唯一的标识我们的窗口
jdhandle = driver.current_window_handle


#点击 酒店
driver.find_element_by_css_selector('ul[class="J_tab_head service_list"] a[href="//hotel.jd.com/"]').click()

#获取当前浏览器所有的窗口句柄 窗口句柄存放在列表中
winhands = driver.window_handles


#方法二:获取所有的窗口的句柄是存在列表中,列表中的最后一个元素就是新打开的窗口的句柄
driver.switch_to.window(winhands[-1])

#关闭广告: 这个地方设置显示等待的原因为让页面元素完成加载
element_locat = WebDriverWait(driver, 20, 0.5).until(EC.presence_of_element_located((By.CSS_SELECTOR, 'i[class="close"]')))
element_locat.click()



#进入酒店选择界面 输入城市
driver.find_element_by_id('city').clear()
driver.find_element_by_id('city').send_keys("西安")
#点击
driver.find_element_by_xpath('//ul[@class="suggest-ul"]/li[1]').click()

#选择入住 时间
driver.find_element_by_id('dateStart').click()
driver.find_element_by_xpath('//div[@class="ui-jm-calendar ui-calendar-3"]/div[2]//tbody/tr[5]/td[5]').click()

#离店日期
driver.find_element_by_xpath('//div[@class="ui-jm-calendar ui-calendar-4"]/div[2]//tbody/tr[1]/td[4]').click()

#选择 商圈
driver.find_element_by_id('hotelKeys').send_keys("钟楼")
#点击 选择
driver.find_element_by_xpath('//body/div[@class="suggest"][2]//li[2]').click()

#点击 搜索酒店 按钮
driver.find_element_by_id("searchBtn").click()

#driver浏览器对象, 20s 最大超时时间, 0.5 间隔步长  ()  设置显示等待 判断页面是否加载完成,这个元素找到了再去获取页面信息
WebDriverWait(driver, 20, 0.5).until(EC.presence_of_element_located((By.CSS_SELECTOR, '.total')))

#获取酒店名字
titename = driver.find_elements_by_css_selector('.p-name')
for one in titename:
    print(one.text)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值