Python3 Selenium学习
Posted 夏天里的Jasmine
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python3 Selenium学习相关的知识,希望对你有一定的参考价值。
https://ke.qq.com/course/310732
一直计划着系统地看看Python3,这两天不用加班了,在网上下了些资源,自己演练一番。
Python3标识符
保留字,直接命令行中可以查看当前版本的保留字
我用的是PyCharm,保留字截图不全面,复制如下:
PyDev console: starting.
Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (AMD64)] on win32
import keyword
keyword.kwlist
[\'False\', \'None\', \'True\', \'and\', \'as\', \'assert\', \'async\', \'await\', \'break\', \'class\', \'continue\',
\'def\', \'del\', \'elif\', \'else\', \'except\', \'finally\', \'for\', \'from\', \'global\', \'if\', \'import\', \'in\',
\'is\', \'lambda\', \'nonlocal\', \'not\', \'or\', \'pass\', \'raise\', \'return\', \'try\', \'while\', \'with\', \'yield\']
Python中以#标识注释 需要注意的是Python中很注重缩进,同一个代码块不需要使用{}而是通过相同的缩进表示
Python中的字符串前缀操作需要说明一下,r"hello world \\t" 其中\\t并不显示为制表符,仅仅以\\t形式显示
命令行中可以使用python3 test.py运行程序
if、while、elif、else、class等与java的不同:后面跟的不是{而是:
Python中的注释:
单行注释
#
多行注释
\'\'\'或"""即三个连续的单引号或双引号
import os from time import strftime, localtime from selenium import webdriver chromedriver = ".\\Tools\\chromedriver.exe" url2 = "https://m.zhipin.com/weijd/v2/job/1665531fe50fa0ea1XJ90tq1GVo~" url3="https://m.zhipin.com/weijd/v2/job/c31807a4e76cddb21Xd-2tS0EFU~" url1 = "https://yijiauat.acxiom.com.cn/Kiosk_Coupon/coup/" url4="https://m.zhipin.com/weijd/v2/job/018cf113ffaf15ac1XF42Ny9FFA~" url="https://m.zhipin.com/weijd/v2/job/0b96886ea49af6e21nF72ti5EFc~" os.environ["webdriver.chrome.driver"] = chromedriver driver = webdriver.Chrome(chromedriver) driver.get(url) driver.maximize_window() driver.implicitly_wait(10) print("======标题是"+driver.title) print("======URL是"+driver.current_url) #注释 print("======页面元素是"+driver.page_source) print(driver.get_window_size()) time =strftime(\'%Y%m%d%H%M%S\',localtime()) \'\'\'print(time)注释\'\'\' """print(time)注释""" print(time) driver.get_screenshot_as_file(".\\\\ScreenShot\\\\file_"+time+".png") print(driver.get_window_position()) print (driver.find_element_by_css_selector ("div.boss-message").text) print(driver.find_element_by_css_selector("p.name").text +" 薪资水平: "+driver.find_element_by_css_selector("p.salary").text) print (driver.find_element_by_class_name ("detail-text").text) print ("------职位信息结束------------") driver.quit ()
Selenium函数
在Selenium包下,webdriver/remote/webdriver.py
实例: 7.1通过id属性定位元素 #号表示通过id属性来定位元素 find_element_by_css_selector("#kw") 7.2通过class属性定位元素 .号表示通过class属性来定位元素 find_element_by_css_selector(".s_ipt") 7.3通过标签名定位元素 find_element_by_css_selector("input") 7.4通过属性定位元素(挺常用的) find_element_by_css_selector("[name=\'wd\']") find_element_by_css_selector("[maxlength=\'255\']") 属性值包含某个值 属性值包含wd:适用于由空格分隔的属性值。 find_element_by_css_selector("[name~=\'wd\']") 7.5父子定位元素 查找有父亲元素的标签名为span,它的所有标签名叫input的子元素 find_element_by_css_selector("span>input") 7.6组合定位元素 标签名#id属性值:指的是该input标签下id属性为kw的元素 find_element_by_css_selector("input#kw") 标签名.class属性值:指的是该input标签下class属性为s_ipt的元素 find_element_by_css_selector("input.s_ipt") 标签名[属性=’属性值‘]:指的是该input标签下name属性为wd的元素 find_element_by_css_selector("input[name=\'wd\']") 父元素标签名>标签名.class属性值:指的是span下的input标签下class属性为s_ipt的元素 find_element_by_css_selector("span>input.s_ipt") 多个属性组合定位元素(挺常用的) 指的是input标签下id属性为kw且name属性为wd的元素 find_element_by_css_selector("input.s_ipt[name=\'wd\']") 指的是input标签下name属性为wd且maxlength为255的元素 find_element_by_css_selector("input[name=\'wd\'][maxlength=\'255\']") 比较复杂的CSS定位可查看 http://www.360doc.com/content/13/1105/10/11675837_326750173.shtml http://www.360doc.com/content/13/1105/10/11675837_326750240.shtml 比较懒惰的方法: 使用搜狐浏览器的firebug工具,复制CSS路径,不过这种方式对层级要求高,到时候自己再修改下。 from time import strftime, localtime import time print(time.time()) time1=strftime(\'%Y-%m-%d %H:%M:%S\', localtime()) time2 = strftime(\'%Y%m%d%H%M%S\', localtime()) time3 = strftime(\'%y%m%d%H%M%S\', localtime()) time4 = strftime(\'%Z %X %y%m%d%H%M%S\', localtime()) time5 = strftime(\'"%a %b %d %H:%M:%S %Y\', localtime()) print(localtime()) print(time1) print(time2) print(time3) print(time4) print(time5) \'\'\' 1537942227.6411319 time.struct_time(tm_year=2018, tm_mon=9, tm_mday=26, tm_hour=14, tm_min=10, tm_sec=27, tm_wday=2, tm_yday=269, tm_isdst=0) 2018-09-26 14:10:27 20180926141027 180926141027 China Standard Time 14:10:27 180926141027 "Wed Sep 26 14:10:27 2018 \'\'\' """ python中时间日期格式化符号: %y 两位数的年份表示(00-99) %Y 四位数的年份表示(000-9999) %m 月份(01-12) %d 月内中的一天(0-31) %H 24小时制小时数(0-23) %I 12小时制小时数(01-12) %M 分钟数(00=59) %S 秒(00-59) %a 本地简化星期名称 %A 本地完整星期名称 %b 本地简化的月份名称 %B 本地完整的月份名称 %c 本地相应的日期表示和时间表示 %j 年内的一天(001-366) %p 本地A.M.或P.M.的等价符 %U 一年中的星期数(00-53)星期天为星期的开始 %w 星期(0-6),星期天为星期的开始 %W 一年中的星期数(00-53)星期一为星期的开始 %x 本地相应的日期表示 %X 本地相应的时间表示 %Z 当前时区的名称%% %号本身 """ from time import strftime, localtime import time print(time.time()) time1=strftime(\'%Y-%m-%d %H:%M:%S\', localtime()) time2 = strftime(\'%Y%m%d%H%M%S\', localtime()) time3 = strftime(\'%y%m%d%H%M%S\', localtime()) time4 = strftime(\'%Z %X %y%m%d%H%M%S\', localtime()) time5 = strftime(\'"%a %b %d %H:%M:%S %Y\', localtime()) print(localtime()) print(time1) print(time2) print(time3) print(time4) print(time5) \'\'\' 1537942227.6411319 time.struct_time(tm_year=2018, tm_mon=9, tm_mday=26, tm_hour=14, tm_min=10, tm_sec=27, tm_wday=2, tm_yday=269, tm_isdst=0) 2018-09-26 14:10:27 20180926141027 180926141027 China Standard Time 14:10:27 180926141027 "Wed Sep 26 14:10:27 2018 \'\'\' """ python中时间日期格式化符号: %y 两位数的年份表示(00-99) %Y 四位数的年份表示(000-9999) %m 月份(01-12) %d 月内中的一天(0-31) %H 24小时制小时数(0-23) %I 12小时制小时数(01-12) %M 分钟数(00=59) %S 秒(00-59) %a 本地简化星期名称 %A 本地完整星期名称 %b 本地简化的月份名称 %B 本地完整的月份名称 %c 本地相应的日期表示和时间表示 %j 年内的一天(001-366) %p 本地A.M.或P.M.的等价符 %U 一年中的星期数(00-53)星期天为星期的开始 %w 星期(0-6),星期天为星期的开始 %W 一年中的星期数(00-53)星期一为星期的开始 %x 本地相应的日期表示 %X 本地相应的时间表示 %Z 当前时区的名称%% %号本身 """
以上是关于Python3 Selenium学习的主要内容,如果未能解决你的问题,请参考以下文章
Selenium Xpath元素无法定位 NoSuchElementException: Message: no such element: Unable to locate element(代码片段
(上)python3 selenium3 从框架实现学习selenium让你事半功倍