1. 浏览器的常用操作: 1> 访问某个页面:页面:driver.get(‘ht(‘t(‘http://www.baidu.com‘) 2> 最大化窗口:窗口:driver.maximize_win_window() 3> 返回上一个页面:页面:driver.back() 4> 前进到下一个页面:页面:driver.forward() 5> 涮新页面:页面:driver.refresh() 6> 获取页面的url:rl:driver.current_url_url 7> 获取页面的标题:标题:driver.title 8> 获取句柄:句柄:driver.current_win_window_handle,唯一标识一次会话窗口的ID 9> 关闭当面页面:driver.close() 10> 退出整个会话:driver.quit() **注意:一个会话可能包括几个页面,退出整个会话,即整个浏览器的退出** 11>设置长和高的窗口:窗口:driver.set_win_window_size(‘800‘,‘600‘) ```python import time from selenium import webdriver #开启了一个与浏览器之间的会话 driver = = webdriver.Chrome() #最大化窗口 #driver.maximize_win_window() #设置长和高的窗口 driver.set_win_window_size(‘800‘,‘600‘) #访问百度 driver.get(‘ht(‘t(‘http://www.baidu.com‘) #访问谷歌 driver.get(‘ht(‘t(‘https://www.google.com‘) #返回上一个页面 time.sleep(2) driver.back() #前进到下一个页面 time.sleep(2) driver.forward() #涮新当前页面 time.sleep(2) driver.refresh() #获取当前页面的url print(nt(driver.current_url_url) #获取当前页面的标题 print(nt(driver.title) #获取当前页面的句柄 print(nt(driver.current_win_window_handle) #关闭窗口 time.sleep(2) driver.quit() ```2. web页面包含元素(标签),属性,事件(元素的操作),有属性和操作即可以构成一个类,这个类为WebElement类,代表一个DOM元素 3. <span class="bg s_ipt_wr quickdelete-wrap"></span>:表示span元素有3个class值(各值是以一个空格隔开),定位时只能取一个值 3. web元素的8种元素定位方式,返回的都是一个WebElement类的对象,即元素对象(元素实例) 1> id:绝对唯一,如一,如driver.find_ele_element_by_id(‘kw‘) **动态id不能通过id定位,只在静态id才能通过id定位** 2> 元素name属性:并不绝对不唯一 a> driver.find_ele_element_by_name(‘wd‘) :若有多个元素的name属性值为wd,那么直接获取第一个 b> driver.find_ele_elements_by_name(‘wd‘) :返回列表,获取所有元素的name属性值为wd的元素 3> 元素的class属性,若元素的class值有多个(各值是以一个空格隔开),定位时只能取一个值,则否会报错Message: invalid selector: Compound class names not permitted a> driver.find_ele_element_by_class_name(‘s_ipt_wr‘):若有多个元素的class属性值为s_ipt_wr,那么直接获取第一个 b> driver.find_ele_elements_by_class_name(‘s_ipt_wr‘):返回列表,获取所有元素的class属性值为s_ipt_wr的元素 **若元素的class值有多个(各值是以一个空格隔开),通过by_class_name定位时只能取一个值,则否会报错** 4> 元素的标签名,并不绝对唯一 a> driver.find_ele_element_by_tag_name(‘input‘) b> driver.find_ele_elements_by_tag_name(‘input‘) **3>和4>方法使用不多,如在需要获取某一类数据时可以使用** 5> ,6> 针对a元素,通过链接的文本内容来定位元素,有完全匹配和部分匹配 a> driver.find_ele_element_by_link_text(‘新闻‘):完全匹配链接的文本内容 b> driver.find_ele_element_by_partial_link_text(‘新‘):部分匹配链接的文本内容 ```python import time from selenium import webdriver #开启了一个与浏览器之间的会话 driver = = webdriver.Chrome() #最大化窗口 driver.maximize_win_window() #访问百度 driver.get(‘ht(‘t(‘http://www.baidu.com‘) #1. id,绝对唯一 # ele_id = = driver.find_ele_element_by_id(‘kw‘) #返回的是一个WebElement类的对象,即元素对象 # print(ele_id) #元素对象 # print(ele_le_id.get_att_attribute(‘class‘)) #获取元素class属性的值 # print(ele_le_id.tag_nam_name) #获取元素的标签名 #2.元素name属性,并不绝对唯一 # ele_name = = driver.find_ele_element_by_name(‘wd‘) #若有多个元素name值为wd,那么直接获取第一个 # eles_name = = driver.find_ele_elements_by_name(‘wd‘) #返回列表:获取所有name值为wd的元素 # print(ele_name) # print(eles_name) #3.元素的class属性,并不绝对唯一,若元素的class值有多个(各值是以一个空格隔开),定位时只能取一个值,则否会报错Message: invalid selector: Compound class names not permitted # ele_class = = driver.find_ele_element_by_class_name(‘s_ipt_wr‘) # eles_class = = driver.find_ele_elements_by_class_name(‘s_ipt_wr‘) # print(ele_class) # print(eles_class) #4.元素的标签名,并不绝对唯一 # ele_tag = = driver.find_ele_element_by_tag_name(‘input‘) # eles_tag = = driver.find_ele_elements_by_tag_name(‘input‘) # print(ele_tag) # print(eles_tag) #5. 6. 针对a元素,通过链接的文本内容来定位元素,有完全匹配和部分匹配 # ele_link = = driver.find_ele_element_by_link_text(‘新闻‘) # ele_part_link = = driver.find_ele_element_by_partial_link_text(‘新‘) # print(ele_link) # print(ele_part_link) ``` 7> xpath(重点掌握) a> 绝对定位:以/开头,前后元素为父子关系,缺点太依赖元素之间的层级关系,一点变动就会导致定位不到 b> 相对定位:以//开头,在页面当中,有没有这个元素,无关元素的位置和第几代,语法//[@属性名=属性值],如//input[@id=‘kw‘]
原文地址:https://www.cnblogs.com/quiet-sun/p/9751913.html
时间: 2024-10-24 14:20:45