1.直接调用型(推荐方式)
driver.find_element_by_xxx(value)
2.使用By类型(需要导入By)
from selenium.webdriver.common.by import By
driver.find_element(By.xxx,value)
2)元素定位方法的分类(按定位方式):id
name
class name
tag name
link text
partial link text
xpath
css selector
2.元素的 *** 作对元素的相关 *** 作,一般要先获取到元素,再调用相关方法
element = driver.find_element_by_xxx(value)
1)点击和输入
点击 *** 作
element.click()
清空/输入 *** 作(只能 *** 作可以输入文本的元素)
element.clear() 清空输入框
element.send_keys(data) 输入数据
3.多标签之间的切换场景:有的时候点击一个链接,新页面并非由当前页面跳转过去,而是新开一个页面打开,这种情况下,计算机需要识别多标签或窗口的情况。
1)获取所有窗口的句柄handles = driver. window_handles
调用该方法会得到一个列表,在selenium运行过程中的每一个窗口都有一个对应的值存放在里面。
2)通过窗口的句柄进入的窗口driver.switch_to_window(handles[n])
driver.switch_to.window(handles[n])
通过窗口句柄激活进入某一窗口
案例:
58同城租房信息:http://bj.58.com
4.多标签之间的切换练习from selenium import webdriver #创建浏览器对象 driver = webdriver.Firefox() #请求某个url对应的响应 driver.get("https://bj.58.com/") #定位招聘 zp = driver.find_element_by_css_selector("#zpNav > a:nth-child(1)") #点击招聘 zp.click() #获取所有窗口的句柄 handles = driver.window_handles #通过窗口的句柄进入的窗口 driver.switch_to.window(handles[1]) #定位包吃住 bcz = driver.find_element_by_css_selector("#hotjob > li:nth-child(1) > a:nth-child(1)") #点击包吃住 bcz.click() #获取所有窗口的句柄 handles = driver.window_handles #通过窗口的句柄进入的窗口 driver.switch_to.window(handles[2]) #定位计算机/互联网/通信 jsj = driver.find_element_by_xpath(".//*[@id='filterJob.']/ul/li[32]/a") # jsj = driver.find_element_by_css_selector("#filterJob > ul:nth-child(2) > li:nth-child(32) > a:nth-child(1)") #点击计算机/互联网/通信 jsj.click() #定位游戏设计/开发 # yxkf = driver.find_element_by_css_selector("li.select:nth-child(15) > a:nth-child(1)") yxkf = driver.find_element_by_xpath(".//*[@id='filterJob']/ul/li[15]/a") #点击游戏设计/开发 yxkf.click() #定位昌平 # cp = driver.find_element_by_css_selector("li.select:nth-child(4) > a:nth-child(1)") cp = driver.find_element_by_xpath(".//*[@id='filterArea']/ul/li[4]/a") #点击昌平 cp.click()
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)