Xpath语法
//body/. 表示从body当前位置查找
from selenium import webdriver driver = webdriver.Chrome() try: #隐式等待,下载get请求之前,而显式请求写在get请求后:wait.until(....) driver.implicitly_wait(10) driver.get('https://doc.scrapy.org/en/latest/_static/selectors-sample1.html') #根据xpath语法查找元素 #从根开始找,第一个 用/ html =driver.find_element_by_xpath('/html') print(html.tag_name) #从根节点开始找,任意一个元素,用// head =driver.find_element_by_xpath('//head') print(head.tag_name) div = driver.find_element_by_xpath('//div') print(div.tag_name) # #查找id为images的div节点 # div1 = driver.find_element_by_xpath('//div[@id="images"]') # print(div1.tag_name) # print(div1.text) #找到第一个a节点 a = driver.find_element_by_xpath('//a') print(a.tag_name) #找到所有a节点 a_s = driver.find_elements_by_xpath('//a') print(a_s) #找到第一个a节点的href属性 # a1 = driver.find_element_by_xpath('//a/href') # # print(a1.tag_name) # #get_attribute:获取节点中的某个属性 a2 = driver.find_element_by_xpath('//a').get_attribute('href') print(a2) finally: driver.close()
2.
元素交互操作
from selenium import webdriver from selenium.webdriver.common.keys import Keys #键盘按键操作 import time driver = webdriver.Chrome() driver.maximize_window() try: driver.implicitly_wait(10) driver.get('https://www.jd.com') image_tag = driver.find_element_by_id('key') image_tag.send_keys('围城') image_tag.send_keys(Keys.ENTER) time.sleep(2) image_tag = driver.find_element_by_id('key') image_tag.clear() image_tag.send_keys('墨菲定律') image_tag.send_keys(Keys.ENTER) button = driver.find_element_by_class_name('button') button.click() time.sleep(2) finally: driver.close()
3.添加cookie
添加cookie """ driver = webdriver.Chrome() driver.maximize_window() try: driver.implicitly_wait(10) driver.get('https://www.zhihu.com/explore') #driver.add_cookie({'name':'tank','pwd':'123'}) #这个不行,应该和网页里的cookie一致 driver.add_cookie({'Name': 'tank', 'Value': '123'}) driver.get_cookies()
#若上面的报错,可以先用print(driver.get_cookies())代替上两句,测试获取当前网站的cookie
time.sleep(2) finally: driver.close()
4.选项卡的操作
#选项卡管理:切换选项卡,有js的方式windows.open,有windows快捷键:ctrl+t等,最通用的就是js的方式 import time from selenium import webdriver browser=webdriver.Chrome() browser.get('https://www.baidu.com')
##browser.execute_script('(alert('tank'))') ##此处为执行javascrpit代码,弹窗操作
browser.execute_script('window.open()') ##此处为执行javascrpit代码,新建浏览器窗口
print(browser.window_handles) #获取所有的选项卡 ##browser.switch_to_window(browser.window_handles[1]) #选择第二个窗口,但是是旧方法
browser.switch_to.window(browser.window_handles[1]) #选择第二个窗口,是新方法
browser.get('https://www.taobao.com') #第二个窗口往淘宝发送请求
time.sleep(10)
##browser.switch_to_window(browser.window_handles[0]) #切换到第一个窗口,但是是旧方法
browser.switch_to.window(browser.window_handles[0]) #切换到第一个窗口,是新方法
browser.get('https://www.sina.com.cn')
browser.close()