selenlum笔记,(定位方式,搜索,cookie)

driver.get_cookies() 获得cookie信息add_cookie(cookie_dict)  向cookie添加会话信息delete_cookie(name)   删除特定(部分)的cookiedelete_all_cookies()    删除所有cookie

driver.quit()退出关闭所有程序及窗口driver.close()关闭当前窗口

driver.get(url)print(driver.title)打印页面title

driver.maximize_window()将浏览器最大化driver.set_window_size(480,800)设置浏览器宽高这个需求也还是有的,比如我们通过PC浏览器在访问一下手机网站时,调整浏览器为手机屏幕的宽、高,容易发现一些显示问题。(上面的手机邮箱网站就是笔者测试过的一个产品)

driver.back()后退一个页面driver.forword()前进一个页面

八种定位方式:· id· name· class name· link text· partial link text· tag name· xpath· css selector

#通过id方式定位browser.find_element_by_id("kw").send_keys("selenium")

#通过name方式定位browser.find_element_by_name("wd").send_keys("selenium")

#通过tag name方式定位browser.find_element_by_tag_name("input").send_keys("selenium")

#通过class name 方式定位browser.find_element_by_class_name("s_ipt").send_keys("selenium")

#通过CSS方式定位browser.find_element_by_css_selector("#kw").send_keys("selenium")

#通过xphan方式定位browser.find_element_by_xpath("//input[@id=‘kw‘]").send_keys("selenium")

link 定位有时候不是一个输入框也不是一个按钮,而是一个文字链接,我们可以通过linkbrowser.find_element_by_link_text("贴 吧").click()

Partial Link Text 定位通过部分链接定位,这个有时候也会用到,我还没有想到很好的用处。拿上面的例子,我可以只用链接的一部分文字进行匹配:browser.find_element_by_partial_link_text("贴").click()

选定一组元素:方法一:inputs = dr.find_elements_by_tag_name(‘input‘)for input in inputs:    if input.get_attribute(‘type‘) == ‘checkbox‘:        input.click()time.sleep(2)方法二:checkboxes = dr.find_elements_by_css_selector(‘input[type=checkbox]‘)for checkbox in checkboxes:    checkbox.click()

去掉最后一个按钮的选定状态:

# 选择所有的checkbox并全部勾上checkboxes = dr.find_elements_by_css_selector(‘input[type=checkbox]‘)for checkbox in checkboxes:    checkbox.click()time.sleep(2)

# 把页面上最后1个checkbox的勾给去掉dr.find_elements_by_css_selector(‘input[type=checkbox]‘).pop().click()time.sleep(2)

driver.find_element_by_link_text(‘link‘).click()WebDriverWait(driver,10).until(lambda the_driver:the_driver.find_element_by_id(dropdown).is_displayd())menu = the_driver.find_element_by_id(‘dropdown‘).find_element_by_link_text(‘Action‘)webdriver.ActionChains(dr).move_to_element(menu).performm()

WebDriverWait(dr, 10) 

10秒内每隔500毫秒扫描1次页面变化,当出现指定的元素后结束。dr就不解释了,前面操作webdriver.firefox()的句柄

 

is_displayed()

该元素是否用户可以见

class ActionChains(driver)

driver: 执行用户操作实例webdriver 

生成用户的行为。所有的行动都存储在actionchains对象。通过perform()存储的行为。

move_to_element(menu)

移动鼠标到一个元素中,menu上面已经定义了他所指向的哪一个元素

to_element:元件移动到

perform()

执行所有存储的行为

· click 点击对象· send_keys 在对象上模拟按键输入· clear 清除对象的内容,如果可以的话

· text  获取该元素的文本data=driver.find_element_by_id("cp").text· submit  提交表单#通过submit() 来操作driver.find_element_by_id("su").submit()  · get_attribute  获得属性值

s_selected(self)

#元素是否被选择

is_enabled()

#元素是否被启用clear()

#清除一个文本输入元素的文本

implicitly_wait():隐式等待  当使用了隐士等待执行测试的时候,如果 WebDriver没有在 DOM中找到元素,将继续等待,超出设定时间后则抛出找不到元素的异常  换句话说,当查找元素或元素并没有立即出现的时候,隐式等待将等待一段时间再查找 DOM,默认的时间是0  一旦设置了隐式等待,则它存在整个 WebDriver 对象实例的声明周期中,隐式的等到会让一个正常响应的应用的测试变慢,  它将会在寻找每个元素的时候都进行等待,这样会增加整个测试执行的时间。

它的用法应该比time.sleep() 更智能,后者只能选择一个固定的时间的等待,前者可以在一个时间范围内智能的等待。

文档解释:

selenium.webdriver.remote.webdriver.implicitly_wait(time_to_wait)

隐式地等待一个无素被发现或一个命令完成;这个方法每次会话只需要调用一次 

driver.switch_to_window() 

有可能嵌套的不是框架,而是窗口,还有真对窗口的方法:switch_to_window

用法与switch_to_frame 相同:

driver.switch_to_window("windowName")

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa等下添加滚动条到底的方法调用js方法

execute_script(script, *args)在当前窗口/框架 同步执行javaScript

使用:driver.execute_script(‘document.title’)

#定位上传按钮,添加本地文件driver.find_element_by_name("file").send_keys(‘D:\\selenium_use_case\upload_file.txt‘)time.sleep(2)上传过程一般要打开一个本地窗口,从窗口选择本地文件添加。所以,一般会卡在如何操作本地窗口添加上传文件。其实,在selenium  webdriver 没我们想的那么复杂;只要定位上传按钮,通send_keys添加本地文件路径就可以了。绝对路径和相对路径都可以,关键是上传的文件存在。

driver.switch_to_alert().accept()确定弹出框的内容

先来解决场第一个问题,法律条款是一个内嵌窗口,通过firebug工具可以定位到内嵌入窗口可以定位到元素的id ,可以通过下面的代码实现。js="var q=document.getElementById(‘id‘).scrollTop=10000"driver.execute_script(js)

正常页面滚动条到底js="var q=document.documentElement.scrollTop=10000"driver.execute_script(js)

滚动条到顶js="var q=document.documentElement.scrollTop=0"driver.execute_script(js)

按钮操作driver = webdriver.Firefox()driver.get("http://passport.kuaibo.com/login/?referrer=http%3A%2F%2Fwebcloud.kuaibo.com%2F")

time.sleep(3)driver.maximize_window() # 浏览器全屏显示

driver.find_element_by_id("user_name").clear()driver.find_element_by_id("user_name").send_keys("fnngj")

#tab的定位相相于清除了密码框的默认提示信息,等同上面的clear()driver.find_element_by_id("user_name").send_keys(Keys.TAB)time.sleep(3)driver.find_element_by_id("user_pwd").send_keys("123456")

#通过定位密码框,enter(回车)来代替登陆按钮driver.find_element_by_id("user_pwd").send_keys(Keys.ENTER)

driver.find_element_by_id("kw").send_keys(Keys.CONTROL,‘a‘)time.sleep(3)

#ctrl+x 剪切输入框内容driver.find_element_by_id("kw").send_keys(Keys.CONTROL,‘x‘)time.sleep(3)

#输入框重新输入内容,搜索driver.find_element_by_id("kw").send_keys(u"虫师 cnblogs")driver.find_element_by_id("su").click()

所有按键的代号module:selenium.webdriver.common.keys? class Keys()– NULL = u’ue000’– CANCEL = u’ue001’ # ^break– HELP = u’ue002’– BACK_SPACE = u’ue003’– TAB = u’ue004’– CLEAR = u’ue005’– RETURN = u’ue006’– ENTER = u’ue007’– SHIFT = u’ue008’– LEFT_SHIFT = u’ue008’ # alias– CONTROL = u’ue009’– LEFT_CONTROL = u’ue009’ # alias– ALT = u’ue00a’– LEFT_ALT = u’ue00a’ # alias– PAUSE = u’ue00b’– ESCAPE = u’ue00c’– SPACE = u’ue00d’– PAGE_UP = u’ue00e’– PAGE_DOWN = u’ue00f’– END = u’ue010’– HOME = u’ue011’– LEFT = u’ue012’– ARROW_LEFT = u’ue012’ # alias– UP = u’ue013’– ARROW_UP = u’ue013’ # alias– RIGHT = u’ue014’– ARROW_RIGHT = u’ue014’ # alias– DOWN = u’ue015’– ARROW_DOWN = u’ue015’ # alias– INSERT = u’ue016’– DELETE = u’ue017’– SEMICOLON = u’ue018’– EQUALS = u’ue019’– NUMPAD0 = u’ue01a’ # numbe pad keys– NUMPAD1 = u’ue01b’– NUMPAD2 = u’ue01c’– NUMPAD3 = u’ue01d’– NUMPAD4 = u’ue01e’– NUMPAD5 = u’ue01f’– NUMPAD6 = u’ue020’– NUMPAD7 = u’ue021’– NUMPAD8 = u’ue022’– NUMPAD9 = u’ue023’– MULTIPLY = u’ue024’– ADD = u’ue025’– SEPARATOR = u’ue026’– SUBTRACT = u’ue027’– DECIMAL = u’ue028’– DIVIDE = u’ue029’– F1 = u’ue031’ # function keys– F2 = u’ue032’– F3 = u’ue033’– F4 = u’ue034’– F5 = u’ue035’– F6 = u’ue036’– F7 = u’ue037’– F8 = u’ue038’– F9 = u’ue039’– F10 = u’ue03a’– F11 = u’ue03b’– F12 = u’ue03c’– META = u’ue03d’– COMMAND = u’ue03d’

driver.get_cookies() 获得cookie信息add_cookie(cookie_dict)  向cookie添加会话信息delete_cookie(name)   删除特定(部分)的cookiedelete_all_cookies()    删除所有cookie

#定位到要右击的元素qqq =driver.find_element_by_xpath("/html/body/div/div[2]/div[2]/div/div[3]/table/tbody/tr/td[2]")#对定位到的元素执行鼠标右键操作ActionChains(driver).context_click(qqq).perform()

context_click()  右击‘‘‘#你也可以使用三行的写法,但我觉得上面两行写法更容易理解chain = ActionChains(driver)implement = driver.find_element_by_xpath("/html/body/div/div[2]/div[2]/div/div[3]/table/tbody/tr/td[2]")

#定位到要双击的元素qqq =driver.find_element_by_xpath("xxx")#对定位到的元素执行鼠标双击操作ActionChains(driver).double_click(qqq).perform()

#定位元素的原位置element = driver.find_element_by_name("source")#定位元素要移动到的目标位置target =  driver.find_element_by_name("target")

#执行元素的移动操作ActionChains(driver).drag_and_drop(element, target).perform()chain.context_click(implement).perform()‘‘‘

时间: 2024-10-20 10:35:24

selenlum笔记,(定位方式,搜索,cookie)的相关文章

【计算机网络学习笔记】什么是cookie以及cookie劫持的基本概念

谨为今后学习参考的笔记.内容来自互联网. Cookie的基本概念: Cookie是由服务器端生成,发送给User-Agent(一般是浏览器),浏览器会将Cookie的key/value保存到某个目录下的文本文件内,下次请求同一网站时就发送该Cookie给服务器(前提是浏览器设置为启用cookie).Cookie名称和值可以由服务器端开发自己定义,对于JSP而言也可以直接写入jsessionid,这样服务器可以知道该用户是否合法用户以及是否需要重新登录等,服务器可以设置或读取Cookies中包含信

【高德地图API】从零开始学高德JS API(七)——定位方式大揭秘

摘要:关于定位,分为GPS定位和网络定位2种.GPS定位,精度较高,可达到10米,但室内不可用,且超级费电.网络定位,分为wifi定位和基站定位,都是通过获取wifi或者基站信息,然后查询对应的wifi或者基站位置数据库,得到的定位地点.定位数据库可以不断完善不断补充,所以,越定位越准确.本文详细描述了,如果使用高德JS API来实现位置定位.城市定位的方法,包含了IP定位,浏览器定位,检索定位等多种网络定位方法.当然,如果您的手机有GPS功能,那么使用浏览器定位的时候,会自动获取GPS信息,使

六 APPIUM Android 定位方式

文本转自:http://www.cnblogs.com/sundalian/p/5629500.html APPIUM Android 定位方式 1.定位元素应用元素 1.1通过id定位元素 Android里面定位的id一般为resrouce-id: 代码可以这样写: WebElement element = driver.findElement(By.id("com.tencent.mm:id/do")); 或者: driver.findElementById("com.t

Sharepoint2013搜索学习笔记之修改搜索拓扑(三)

搜索服务新建好之后可以从管理中心,应用程序管理页面,进入搜索服务的管理页面,进入管理页面之后可以看到当前sharepoint场的搜索拓扑结构. 如果sharepoint场内有多台服务器,需要将搜索组件部署到这些服务器上,可以在装有sharepoint管理中心的服务器上启动sharepoint命令行管理程序,通过口令的方式对搜索拓扑进行更改. 注意: 向新的服务器添加搜索组件之前,必须先启动新增服务器上的搜索服务实例.搜索服务实例将启动搜索服务(OSearch15 和 SPSearchHostCo

七 APPIUM Android 定位方式

1.定位元素应用元素   1.1通过id定位元素 Android里面定位的id一般为resrouce-id: 代码可以这样写: WebElement element = driver.findElement(By.id("com.tencent.mm:id/do")); 或者: driver.findElementById("com.tencent.mm:id/do") 下面的例子展示的是通过id定位到元素并点击: @Test public void doClick

selenium的定位方式

第1种方法:通过绝对路径做定位(相信大家不会使用这种方式) By.xpath("html/body/div/form/input") By.xpath("//input") 第2种方法:通过元素索引定位 By.xpath("//input[4]") 第3种方法:使用xpath属性定位 By.xpath("//input[@id='kw1']") By.xpath("//input[@type='name' and @

selenium 定位方式

在使用selenium webdriver进行元素定位时,通常使用findElement或findElements方法结合By类返回的元素句柄来定位元素.其中By类的常用定位方式共八种,现分别介绍如下. 1. By.name() 假设我们要测试的页面源码如下: <button id="gbqfba" aria-label="Google Search" name="btnK" class="gbqfba"><

APPIUM Android 定位方式

原文地址https://www.cnblogs.com/sundalian/p/5629500.html 1.定位元素应用元素 1.1通过id定位元素 Android里面定位的id一般为resrouce-id: 代码可以这样写: WebElement element = driver.findElement(By.id("com.tencent.mm:id/do")); 或者: driver.findElementById("com.tencent.mm:id/do"

selenium+python之元素定位方式介绍

网页自动化测试最基本的要求就是要定位到各个元素,然后才能对该元素进行各种操作(输入,点击,清除,提交等),所以今天来总结下Selenuim+Python最基本的几种定位方式及实例说明, 以百度搜索输入框为例,用谷歌浏览器具体说明各个定位方式的用法. 1.导入selenium包的webdriver方法 输入 from selenium import webdriver 2.从 time 模块中引入sleep函数,使用sleep函数可以让程序休眠 输入 from time import sleep