WebDriver浏览器属性,WebElement类方法实战,Select类实战
from selenium import webdriver driver=webdriver.Chrome() driver.maximize_window() driver.get('http://www.baidu.com') #获取当前的测试地址 print(driver.current_url) driver.close()
该方法为特性方法,
特性方法可以简单的理解为它是类里面的一个方法但是该方法它是属于只读属性,所以所有的特性方法在调用的时候都是没有()的
from selenium import webdriver driver=webdriver.Chrome() driver.maximize_window() driver.get('http://www.baidu.com') print(driver.page_source) driver.quit()
获取浏览器的title其实很简单的,比如百度的title它就是“百度一下,你就知道”,那么下面针对这部分进行具体的验证,
from selenium import webdriver driver=webdriver.Chrome() driver.maximize_window() driver.get('http://www.baidu.com') #获取title print(driver.title) driver.close()
import time from selenium import webdriver driver=webdriver.Chrome() #窗口最大化 driver.maximize_window() driver.get('http://www.baidu.com') time.sleep(1) driver.get('http://www.bing.com') time.sleep(1) #回退 driver.back() print(driver.current_url) time.sleep(1) #前进 driver.forward() print(driver.current_url) time.sleep(1) driver.close()
窗口最大化
把页面窗口化变为全屏显示
driver.maximize_window()
多窗口的实战
先来说一个很简单的场景,在sina的邮箱中,如果需要登录,但是没有账户,那么就需要注册,这个时候就需要点击注册的按钮,就会打开一个新的页面到注册的页面,并不会说直接跳转到注册的页面,这个时候由于需要操作注册的页面,就需要实现从当前页面切换到另外一个新的页面,那么这个时候就需要使用到多窗口的操作和实战。其实坦白说,多窗口更多值的是两个窗口,如果是2个以上的窗口,是很难判断的,因为缺少判断的基准,多窗口的解决步骤可以具体的描述为:
-
先获取当前窗口句柄
-
然后点击链接,打开一个新的窗口句柄
-
然后获取到所有的窗口句柄
-
循环所有的窗口句柄,判断如果不是当前窗口句柄,那么就切换到新的窗口句柄(如果当前的,就只能是新的窗口了)
-
切换到新的窗口后,进行操作完成后,然后关闭新的窗口,再切换到当前窗口句柄
以百度新闻为例
from selenium import webdriver from selenium.webdriver.common.by import By driver=webdriver.Chrome() #窗口最大化 driver.maximize_window() driver.get('http://www.baidu.com') time.sleep(1) #获取当前的窗口 nowHeadler=driver.current_window_handle driver.find_element(By.LINK_TEXT,'新闻').click() time.sleep(2) #获取所有的窗口 allHeadlers=driver.window_handles #对所有的窗口进行循环和判断 for hander in allHeadlers: #判断是不是当前窗口 if hander!=nowHeadler: #切换到新的窗口 driver.switch_to.window(hander) time.sleep(1) driver.find_element(By.ID,'ww').send_keys('百度新闻') time.sleep(1) driver.close() #切换到当前窗口 driver.switch_to.window(nowHeadler) time.sleep(1) driver.find_element(By.ID,'kw').send_keys('我回来了') time.sleep(1) driver.close()
清空clear()
clear()的方法是清空的意思,也就说在一个文本输入框里面输入关键字的信息后,调用该方法可以清空里面的具体信息。下面还是通过具体的案例实战代码来演示下
import time from selenium import webdriver from selenium.webdriver.common.by import By driver=webdriver.Chrome() driver.maximize_window() driver.get('http://www.baidu.com') time.sleep(1) so=driver.find_element(By.ID,'kw') so.send_keys('admin') time.sleep(2) so.clear() driver.close()
get_attribute()的方法是获取元素属性的值,比如我们可以获取文本输入框里面的友好提示信息
import time from selenium import webdriver from selenium.webdriver.common.by import By driver=webdriver.Chrome() driver.maximize_window() driver.get('http://www.baidu.com') time.sleep(1) so=driver.find_element(By.ID,'kw') so.send_keys('admin') time.sleep(2) #获取属性的值 print(so.get_attribute('value')) print(so.get_attribute('maxlength')) driver.close()
is_displayed()
凡事一个方法带is的基本返回的结果都是bool的数据类型,那么它的结果如果是为真的,返回的结果就是True,如果结果是假的,返回的结果就是False。比如在百度的首页“关于百度”是否可见,我们可以调用该方法
import time from selenium import webdriver from selenium.webdriver.common.by import By driver=webdriver.Chrome() driver.maximize_window() driver.get('http://www.baidu.com') time.sleep(1) obj=driver.find_element(By.LINK_TEXT,'关于百度') print(obj.is_displayed()) driver.close()
is_enabled()
readonly属性,添加这个属性后文本框则不能输入
import time from selenium import webdriver from selenium.webdriver.common.by import By driver=webdriver.Chrome() driver.maximize_window() driver.get('http://www.baidu.com') time.sleep(1) obj=driver.find_element(By.ID,'kw') print(obj.is_enabled()) driver.close()
is_selected()
该方法返回的结果信息是是否可选中,使用的场景主要为在登录的案例中,一般记住登录都是默认选中的
import time from selenium import webdriver from selenium.webdriver.common.by import By driver=webdriver.Chrome() driver.maximize_window() driver.get('https://mail.sina.com.cn') time.sleep(1) obj=driver.find_element(By.ID,'store1') ///定位到自动登录的勾选框 print(obj.is_selected()) time.sleep(2) obj.click() ///点击取消自动登录 time.sleep(1) print(obj.is_selected()) time.sleep(2) driver.close()
Select类实战
元素定位的方式步骤具体为:
-
首先获取下拉框的属性,当然这些属性可以是id,name以及xpath的信息
-
拿到下拉框属性的对象,然后实例化Select的类
-
下来调用该类里面的方法来获取下拉框选项里面的具体内容
下拉框定位实战
针对如上的,下面通过三种的方式来定位下拉框的内容,具体涉及到的方法以及案例实战的代码具体在
如下会详细的演示它的应用。
select_by_index()
select_by_index()的方法是通过索引的方式,如我们在上面的交互中,我们想选择下拉框中的Go
语言,它是在第三位,那么它的索引就是2,因为索引是从0开始,下面的代码案例主要是以索引的方式
来进行定位的
import time from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.select import Select driver=webdriver.Chrome() driver.maximize_window() driver.get('file:///C:/Users/85425/Desktop/select(1).html') time.sleep(1) sel=driver.find_element(By.ID,'nr') obj=Select(sel) time.sleep(1) #索引模式 obj.select_by_index(2) time.sleep(2) driver.close()
select_by_value()方法是通过value的方式来进行定位,也就是标签中option里面的value属性来进行定位
比如我们还是Go语言,那么它的value的值就是“Go”
import time from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.select import Select driver=webdriver.Chrome() driver.maximize_window() driver.get('file:///C:/Users/85425/Desktop/select(1).html') time.sleep(1) sel=driver.find_element(By.ID,'nr') obj=Select(sel) time.sleep(1) #value值模式 obj.select_by_value('Go') time.sleep(2) driver.close()
select_by_text()
select_by_text()的方法是通过文本信息来定位的,比如下拉框还是想选择Go,那么它的文本信息其实就
是“Go语言”
import time from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.select import Select driver=webdriver.Chrome() driver.maximize_window() driver.get('file:///C:/Users/85425/Desktop/select(1).html') time.sleep(1) sel=driver.find_element(By.ID,'nr') obj=Select(sel) time.sleep(1) #文本模式 obj.select_by_visible_text('Go语言') time.sleep(2) driver.close()
案例实战
-
先定位到“工作性质”后,然后点击
-
然后再选择下拉框中需要选择的项,定位到后进行点击,就能够定位到了
下面使用具体的代码来演示下这部分的案例实战应用,涉及到的代码为:
import time from selenium import webdriver from selenium.webdriver.common.by import By '''对于不标准的select怎么办''' driver=webdriver.Chrome() driver.maximize_window() driver.get('https://www.lagou.com/') time.sleep(5) #输入关键字 driver.find_element(By.ID,'search_input').send_keys('测试开发工程师') time.sleep(2) driver.find_element(By.ID,'search_button').click() time.sleep(3) #点击学历要求 driver.find_element(By.XPATH,'//*[@id="jobsContainer"]/div[2]/div[1]/div[1]/div[2]/div/ul/li[2]/div/span').click() time.sleep(3) #选择大专 driver.find_element(By.XPATH,'//*[@id="jobsContainer"]/div[2]/div[1]/div[1]/div[2]/div/ul/li[2]/div/div/ul[2]/li[1]/span').click() time.sleep(5) driver.close()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架