1、元素定位的8个方式(属性)(7个单个元素+1个多个元素)
from selenium import webdriver from selenium.webdriver.common.by import By import time as t
(1) ID="id"
'''通过ID来定位''' driver=webdriver.Chrome() driver.get('http://www.baidu.com') driver.find_elements_by_id('kw').send_keys("hello world") t.sleep(5)
(2)NAME="name"
'''通过name来定位''' driver=webdriver.Chrome() driver.get('http://www.baidu.com') driver.find_element_by_name('wd').send_keys("hello world") t.sleep(5)
(3)CLASS_NAME="class_name"
'''通过class_nam来定位''' driver=webdriver.Chrome() driver.get('http://www.baidu.com') driver.find_element_by_class_name('s_ipt').send_keys("hell world") t.sleep(5)
(4)XPATH=''xpath"
'''通过xpath的定位方式''' driver=webdriver.Chrome() driver.get('http://www.baidu.com') #先定位到需要的代码行处,鼠标右键copy——>copy Xpath driver.find_element_by_xpath('//*[@id="kw"]').send_keys("hell world") t.sleep(5)
(5)CSS_SELECTOR="css_selector"
'''通过css_selector来定位''' '''获取的方法是find_elements_by_css_selector()''' driver=webdriver.Chrome() driver.get('http://www.baidu.com') #先定位到需要的代码行处,鼠标右键copy——>copy css_selector driver.find_element_by_css_selector('#kw').send_keys("hell world") t.sleep(5)
(6)LINK_TEXT="link_text"
driver=webdriver.Chrome() driver.get('http://www.baidu.com') driver.find_element_by_link_text('直播').click() t.sleep(5)
(7)PARTIAL_LINK_TEXT="partial_link_text"
'''通过PARTIAL_LINK_TEXT来定位(模糊定位)''' driver=webdriver.Chrome() driver.get('http://www.baidu.com') driver.find_element_by_partial_link_text('播').click() t.sleep(5)
(8)TAG_NAME="tag-name"(多个元素)
'''通过tag_name来定位(多个元素定位的方式)''' driver=webdriver.Chrome() driver.get("http://www.baidu.com") tag=driver.find_elements_by_tag_name('input') tag[7].send_keys('hello world') t.sleep(5) driver.quit()
2、元素定位方法的实战案例(新浪邮箱)
'''新浪邮箱sina email''' driver=webdriver.Chrome() driver.get('https://mail.sina.com.cn/') # 输入邮箱 driver.find_element_by_id('freename').send_keys('lyl.@163.com') t.sleep(5) # 输入密码 driver.find_element_by_id("freepassword").send_keys('123456') t.sleep(5)
'''sina邮箱的注册信息''' driver=webdriver.Chrome() '''浏览器最大化''' driver.maximize_window() driver.get('https://mail.sina.com/register/regmail.php') #邮箱地址 driver.find_element_by_name('email').send_keys('lyl') t.sleep(3) #密码 driver.find_element_by_name('psw').send_keys('123456') t.sleep(3) #确认密码 driver.find_element_by_name('npsw').send_keys('123456') t.sleep(3) #手机号 driver.find_element_by_name('phonenumber').send_keys(17485236987) t.sleep(3) #程序进程结束,退出 driver.quit() #程序退出 #driver.close()
3、函数对元素定位方法的封装
'''使用函数让代码更优雅(封装代码)''' def ID(driver,content): return driver.find_element_by_id(content) def name(driver,content): return driver.find_element_by_name(content) def className(driver,content): return driver.find_element_by_class_name(content) def Xpath(driver,content): return driver.find_element_by_xpath(content) def LinkText(driver,content): return driver.find_element_by_link_text(content) def cssSelector(driver,content): return driver.find_element_by_css_selector(content) def partialLinkText(driver,content): return driver.find_element_by_partial_link_text(content) def tagsName(driver,content,index): return driver.find_elements_by_tag_name(content)[index] driver=webdriver.Chrome() driver.get('http://www.baidu.com') #ID(driver,'kw').send_keys('hello') #name(driver,'wd').send_keys('hehe') #className(driver,'s_ipt').send_keys('wowo') #cssSelector(driver,'#kw').send_keys('wowo') #Xpath(driver,'//*[@id="kw"]').send_keys('wowo') #LinkText(driver,'直播').click() #partialLinkText(driver,'播').click() tagsName(driver,'input',7).send_keys('tags name') t.sleep(5) driver.quit()
4、webdriverl浏览器属性的方法应用
'''webdriver操作浏览器的属性''' driver=webdriver.Chrome() driver.get('http://www.baidu.com') #获取当前地址current_url print('获取当前的地址:',driver.current_url) #获取当前页面的标题title print('获取title:',driver.title) #获取当前页面的资源page_source print('获取当前页面的资源:',driver.page_source) t.sleep(5) driver.get('https://www.sina.com.cn/') t.sleep(5) #前进 driver.forward() t.sleep(5) #后退 driver.back() t.sleep(5) #获取执行的浏览器name print('获取执行的浏览器:',driver.name) driver.quit()