Selenium安装与元素定位

it2022-05-05  87

对于selenium,以前都是一直学习在用,碰到问题就搜索都没做什么整与总结, 现花点时间整理下,方便以后自己看。


零、安装selenium

pip install selenuim下载驱动 Firefox驱动: geckodriverChrome驱动: chromedriver 把下载好的驱动解压放到Python安装目录下或添加到环境变量中,就OK了

一、起步

from selenium import webdriver # 支持多种浏览器,这里以Chrome为例 browser = webdriver.Chrome() browser.get("http://www.python.org") # 获取网页title browser.title # 获取当前访问网页url browser.current_url # 获取网页的源码 browser.page_source # 获取所有的窗口id,返回一个列表 borwser.window_handles # 获取当前窗口id browser.current_window_handle browser.get('https://www.baidu.com/') browser.get('https://www.taobao.com/') # 后退 browser.back() time.sleep(1) print(browser.title) # 前进 browser.forward() print(browser.title) # 关闭当前窗口 browser.close() # 退出驱动,关闭所有关联的窗口 browser.quit()

二、打基础-元素定位

定位https://www.python.org首页的搜索框如下图:

代码如下:

# 定位界中的三大金刚:id,css, xpath # 根据Id定位 input_id = browser.find_element_by_id('id-search-field') # 根据css定位 input_css = browser.find_element_by_css_selector('#id-search-field') # 根据xpath定位 input_xpath = browser.find_element_by_xpath('//input[@id="id-search-field"]') print(input_id,input_css,input_xpath) browser.close() 如果三大金刚不能满足你的需求, 还可以使用以下的定位方式 # 根据元素的name属性定位 browser.find_element_by_name('q') # 根据链接文本定位超链接,两个方法自己试哈 browser.find_element_by_link_text('Donate') browser.find_element_by_partial_link_text('Donate') # 根据标签名定位, 例如定位上述首页中的大Logo browser.find_element_by_tag_name('h1') # 根据元素的class属性定位 browser.find_element_by_class_name('site-headline') # ps: class含有空格的复合类怎么办 # 以上方式的缺点是如果对应的元素不是唯一的,会返回第一个匹配的元素,可能不是你想要的结果 # 如果没有元素匹配,会抛出NoSuchElementException异常 # 元素不是唯一的怎么才能获取所有的, 就是在element后面加多个s,返回结果是List input_q = browser.find_elements_by_name('q') # 知道需要的元素在第几个就可以通过操作List的方法提取, 或者用for循环,例如 q = input_q[0] 终极方式find_element,实际上以上的定位方式都是通过它来实现的 from selenium import webdriver from selenium.webdriver.common.by import By browser = webdriver.Chrome() browser.get('https://www.python.org') # 第一个参数是定位方式,第二个传入具体的参数 input_q= browser.find_element(By.NAME,'q') print(input_q) browser.quit()

当然find_element() 方法,不止By.NAME,更多的自己尝试吧


最新回复(0)