使用示例
首先,让我们看一个硒的例子:
导入时间#从selenium导入浏览器驱动#导入webdriver#用浏览器驱动实例化一个Google浏览器驱动对象,所有关于浏览器的操作都由驱动对象driver = webdriver完成。Chrome()try: #打开浏览器,访问指定的URL driver . get(& # 39;https://www.baidu.com/')#你想对当前页面做什么Input _ obj = driver。按ID查找元素(& # 39;kw & # 39)print(input _ obj)input _ obj . send _ keys(& # 39;听雨是危险的& # 39;)time . sleep(2)driver . find _ element _ by _ id(& # 39;苏& # 39;).click()time . sleep(2)driver . find _ element _ by _ XPath(& # 39;//*[@ id = & # 34;1"]/H3/a & # 39;).click()最后:time.sleep(10) #关闭浏览器driver.close()在下面的讨论中,除非特别说明,我会用driver来指代浏览器驱动的对象,而不是每次都创建。并且使用后会关闭驱动,不会先写关闭操作。
常用类
从selenium导入webdriver #从Selenium驱动浏览器。WebDriver导入动作链#鼠标相关的操作,比如从Selenium滑动验证。Webdriver.com门。如何从selenium中选择标签元素。webdriver.com mon . keys import keys #键盘相关的硒。web driver . support import expected _ conditions as EC #各种判断一般与等待事件一起使用。例如,等待元素从selenium加载。web driver . support . waitimportwebdriverwait #等待事件,可以和EC一起使用从selenium操作浏览器页面导入webdriver #从selenium驱动浏览器。webdriver导入操作链# mouse。比如来自selenium的滑动验证。webdriver。来吧。通过# selector导入,如何从selenium中选择标签元素。webdriver.com mon . keys import keys #键盘相关的硒。web driver . support import expected _ conditions as EC #各种判断一般与等待事件一起使用。例如,等待元素从selenium加载。web driver . support . waitimportwebdriverwait #等待事件,可与EC浏览器页面操作driver.maximize_window() #浏览器窗口最大化driver . Minimize _ window()# Minimize driver . set _ window _ size(800,600) #指定窗口大小print(driver.title) #获取页面的标题打印(driver . page _ source)#获取网页文本打印(driver.current_url) #获取当前页面的url打印(driver . name)#获取驱动程序对象名称,例如:chromeplintget _ cookies ()) # Get cookie sprint(驱动。current _ window _ handle) #获取当前浏览器窗口id,Print (handles = driver)。window _ handles) #将在切换窗口时使用,以获取所有浏览器窗口id并将其存储在列表中driver.refresh() #刷新当前页面driver . back()# Backward driver . Forward()# Forward driver . execute _ script(& # 39;alert(& # 34;Xxoo不可描述& # 34;)')# js Inject driver.close() #关闭当前窗口对象driver.quit() #退出浏览器截屏操作#获取截屏字节流,我们需要手动写入文件RES = driver . Get _ screen shot _ as _ png()# print(RES)#图片二进制数据f = open(& # 39;a.png & # 39, 'wb & # 39)f.write(res)#直接保存截图,图片格式为png driver . Se _ screen down(& # 39;巴新& # 39;)#某元素驱动程序截图. find _ element _ by _ id(& # 39;login _ box & # 39).截图(& # 39;中新巴新& # 39;)选择器选择器用于在页面中查找分配的标签。Find_element_by_xxx只会查找第一个符合条件的tag,并且会返回一个tag对象;find_elements_by_xxx返回一个列表,其中包含所有合格的标签。
#找到驱动程序。按id查找_元素_按ID(& # 39;苏& # 39;)driver . find _ elements _ by _ id(& # 39;xxx & # 39)#通过xpath定位driver . find _ element _ by _ XPath(& # 39;xxx & # 39)driver . find _ elements _ by _ XPath(& # 39;xxxx & # 39)#按类名定位driver . find _ element _ by _ class _ name(& # 39;xxx & # 39)driver . find _ elements _ by _ class _ name(& # 39;xxx & # 39)#浏览css选择器#浏览f12选中的标签,右键单击copy-copyselector # CSS选择器#-tag #-id #-classdriver。find _ element _ by _ CSS _ selector(& # 39;xx & # 39)driver . find _ elements _ by _ CSS _ selector(& # 39;xx & # 39)#按标记名定位driver . find _ element _ by _ tag _ name(& # 39;div & # 39)driver . find _ elements _ by _ tag _ name(& # 39;div & # 39)#文本定位通过A标签的link属性#只能应用于超链接的精确定位# link_text # partial_link_text:模糊定位,慎用driver . find _ element _ by _ link _ Text(& # 39;xxx & # 39)driver . find _ elements _ by _ link _ text(& # 39;xxx & # 39)driver . find _ element _ by _ partial _ link _ text(& # 39;xx & # 39)driver . find _ elements _ by _ partial _ link _ text(& # 39;xxx & # 39)#根据名称属性定位driver . find _ element _ by _ name(& # 39;xx & # 39)driver . find _ elements _ by _ name(& # 39;xx & # 39)可以通过以下方式调用:
从selenium导入webdriver从selenium . web driver . common . by import by driver = web driver。Firefox()driver . get(& # 39;https://www.baidu.com/')# driver . find _ element _ by _ id(& # 39;苏& # 39;)driver.find_element(By。ID,& # 39;kw & # 39).send _ keys(& # 39;便宜你的脚& # 39;)driver.find_elements(By。ID,& # 39;kw & # 39)[0].send _ keys(& # 39;便宜你的脚& # 39;)# by . id # by . class _ name # by . link _ text # by . name # by . XPath # by . CSS _ selector如果鼠标事件是简单的鼠标左键点击,可以直接使用标签的click方法实现:
driver . get(& # 39;https://www.baidu.com/')driver . find _ element _ by _ id(& # 39;苏& # 39;).click()动作链用于实现鼠标事件。鼠标事件有很多,包括点击和拖动。请注意,在设置鼠标事件之后,应该使用perform方法来使其生效。
来自硒。WebDriver导入动作链#鼠标相关的操作都在这里#左键A1 = driver。find _ element _ by _ XPath(& # 39;/html/body/form/input[3]& # 39;)动作链(驱动程序)。单击(A1)。Perfect () #左键双击A2 = driver。find _ element _ by _ XPath(& # 39;/html/body/form/input[2]& # 39;)动作链(驱动程序)。双击(A2)。Perfect () #右击A3 =驱动程序。find _ element _ by _ XPath(& # 39;/html/body/form/input[4]& # 39;)动作链(驱动程序)。上下文_单击(a3)。Perform () #移动鼠标动作链(驱动程序)。移动到元素(li)。Perform () # Drag a = driver。按id查找元素(& # 39;可拖动& # 39;)time . sleep(1)b = driver . find _ element _ by _ id(& # 39;可丢弃& # 39;)时间。睡眠(1)动作链(驱动程序)。拖放(a,b)。执行()鼠标事件的所有方法:
print(dir(action chains))[& # 39;点击& # 39;, '点击并按住& # 39;, '上下文_点击& # 39;, '双击& # 39;, '拖放& # 39;, '按偏移量拖放& # 39;, 'key _ down & # 39, 'key _ up & # 39, 'move _ by _ offset & # 39, 'move _ to _ element & # 39, 'move _ to _ element _ with _ offset & # 39;, '暂停& # 39;, '执行& # 39;, '发布& # 39;, 'reset _ actions & # 39, 'send _ keys & # 39, 'send _ keys _ to _ element & # 39]键盘事件(Keyboard event)键盘事件是一种标记对象的方法,应用最广泛的方法是在输入框中输入数据。
来自硒。webdriver.com mon . keys import keys # Get输入标签user = driver . find _ element _ by _ ID(& # 39;id _用户名& # 39;)user . send _ keys(& # 39;alexd & # 39)#输入内容user.send _ keys (keys.control,& # 39;一& # 39;)#使用快捷键ctrl+a用户。send _ keys(按键。delete) #按delete键用户。send _ keys(按键。退格)#按退格键user.send_keys(键。ENTER) #用户按回车键。send _ keys(按键。选项卡,& ABC & # 39)#选项卡,输入值user。send _ keys(按键。标签,钥匙。enter) # tab,然后按enter #上传文件:1。访问网址,请按2。获取输入框,3。输入文件路径,按4。单击上传对象=驱动程序。通过CSS选择器查找元素。input[name = & # 34;excel & # 34]')file _ path = r & # 39c:\\ users \\ administrator \\ desktop \\ interface测试示例。xlsx & # 39Obj.send_keys(file_path)键盘操作所有方法:
Print(dir(Keys)) #查看Keys[& # 39;补充& # 39;, 'ALT & # 39, '箭头_向下& # 39;, 'ARROW _ LEFT & # 39, '箭头_右& # 39;,'ARROW _ UP & # 39, '退格& # 39;, 'BACK _ SPACE & # 39, '取消& # 39;, 'CLEAR & # 39,'命令& # 39;, '控制& # 39;, '十进制& # 39;, '删除& # 39;, '除& # 39;, '下来& # 39;,'END & # 39, '输入& # 39;, '等于& # 39;, '逸& # 39;, 'F1 & # 39, 'F10 & # 39;, 'F11 & # 39,'F12 & # 39, 'F2 & # 39, 'F3 & # 39, 'F4 & # 39;, 'F5 & # 39, 'F6 & # 39;, 'F7 & # 39;, 'F8 & # 39;, 'F9 & # 39,'救命& # 39;, '首页& # 39;, '插入& # 39;, '左& # 39;, 'LEFT _ ALT & # 39, '左_控制& # 39;,'LEFT _ SHIFT & # 39, 'META & # 39, '乘& # 39;, 'NULL & # 39, 'NUMPAD0 & # 39,'NUMPAD1 & # 39, 'NUMPAD2 & # 39, 'NUMPAD3 & # 39, 'NUMPAD4 & # 39, 'NUMPAD5 & # 39,'NUMPAD6 & # 39, 'NUMPAD7 & # 39, 'NUMPAD8 & # 39, 'NUMPAD9 & # 39, 'PAGE _ DOWN & # 39,'PAGE _ UP & # 39, '暂停& # 39;, 'RETURN & # 39, '对& # 39;, '分号& # 39;, '分隔符& # 39;,'SHIFT & # 39, '空间& # 39;, '减去& # 39;, 'TAB & # 39, 'UP & # 39]窗口切换需要注意的是,Selenium在iframe中找不到标签,需要切换到iframe进行后续搜索。
driver . switch _ to . window(& # 39;窗口ID & # 39)#切换到指定的窗口对象,current_window_handle和window_handles的属性可以得到driver . Switch _ to . frame(;)#切换到指定的iiframedriver。切换到。alert () #切换到alertdriver。切换到。default _ content () #切换到上一页驱动程序。切换到。parent _ frame () #切换到其父的iframescroll bar操作,通过js注入滚动滚动条。
导入时间从selenium导入webdriverdriver = webdriver。chrome()driver . get(& # 39;https://www.cnblogs.com/Neeo/articles/11002003.html')time . sleep(3)for I in range(1,10):driver . execute _ script(& # 39;window.scrollTo(0,{ } 00);'。format(i)) time.sleep(1)直接滚动到页面底部:
driver.execute_script('window.scrollTo(0, document.body.scrollHeight);')
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。