Python中selenium的使用问题
selenium模块
selenium安装与应用
个人使用的是Python3.7,在Pycharm软件里面命令行Terminal中输入pip install selenium完成安装,然后在file->Setting->Project interpreter中导入selenium模块
webdriver安装
这个我是在网上找到的chromedriver镜像地址,
http://npm.taobao.org/mirrors/chromedriver/,在里面找到和你chrome对应的版本,我由于刚更新过chrome,没有找到完全一致的,就找了其中大版本相对应的文件,完全可以运行,然后将下载好的chromedriver.exe文件放入Python37中的Scripts里面即可。
selenium常用定位方法
需要注意的是,我刚开始看的教程视频使用的selenium版本过于老旧,与新版本语法不一致,导致了各种报错。
新版本 | 旧版本 |
---|---|
self.find_element(By.ID," ") | self.find_element_By_ID(" ") |
self.find_element(By.XPATH," ") | self.find_element_By_XPATH(" ") |
self.find_element(By.CLASS_NAME," ") | self.find_element_By_CLASS_NAME(" ") |
self.find_element(By.LINK_TEXT," ") | self.find_element_By_LINK_TEXT(" ") |
self.find_element(By.PARTIAL_LINK_TEXT," ") | self.find_element_By_PARTIAL_LINK_TEXT(" ") |
self.find_element(By.CSS_SELECTOR," ") | self.find_element_By_CSS_SELECTOR(" ") |
注:self = webdriver.Chrome()
另外新版本的大小写需要区分,旧版本的我参考了其他人的代码似乎没有进行区分,其中LINK_TEXT适用于超链接的具体文本搜索,PARTIAL_LINK_TEXT适用于超链接的模糊搜索
函数 | 作用 |
---|---|
self.find_element(," ").click() | 点击查询到的元素的位置 |
self.find_element(," ").send_keys(xxx) | 将你的文本输入到查询到的元素的位置,如账号和密码等 |
self.find_element(," ").clear() | 清空查询到元素位置的内容 |
由于刚开始接触,目前就暂时用到了这些。
selenium的使用
由上面可以看出,其是通过HTML的ID,CLASS等分类进行查找的,我们需要做的就是找到网页HTML中的这些值,然后用其来进行查询,需要注意的是部分网页中的ID可能是动态ID,CLASS可能会重复从而导致报错或者选择的不是你想要的元素。
我个人认为比较有用的几个方法:
- XPATH中的contains方法:
self.find_element(By.XPATH,"//文件名称[contains(text(),'文本内容')]")
- XPATH中的多种条件相与进行筛选
self.find_element(By.XPATH,"//文件名称[@name = 'xx' and @ID = 'xx' and @class = 'xx']")