总结Selenium WebDriver中一些鼠标和键盘事件的使用
- 格式:docx
- 大小:73.43 KB
- 文档页数:13
(七)⾃动化测试之selenium学习⼼得-实战技巧⼀、Selenium 提供的ActionChains类实现⿏标右键点击、双击、移动⿏标到某个元素、⿏标拖拽等应⽤场景我们以移动⿏标到某个元素为例。
⿏标移动到百度页⾯【设置】上显⽰下拉列表代码如下:from selenium import webdriver# 导⼊ActionChains 类from mon.action_chains import ActionChainswd = webdriver.Chrome()wd.implicitly_wait(10)wd.get('https:///')# 使⽤ ActionChains 来模拟⿏标移动到设置,下拉列表显⽰的操作ac = ActionChains(wd)ac.move_to_element(wd.find_element_by_id('s-usersetting-top')).perform()⼆、冻结界⾯有些⽹站上⾯的元素,我们⿏标放在上⾯,会动态弹出⼀些内容。
⿏标⼀移⾛后⼜消失,⽆法定位到元素属性,我们可以这么办哦在开发者⼯具栏 console ⾥⾯执⾏如下js代码setTimeout(function(){debugger}, 5000)这句代码什么意思呢?表⽰在 5000毫秒后,执⾏ debugger 命令执⾏该命令会浏览器会进⼊debug状态。
debug状态有个特性,界⾯被冻住,不管我们怎么点击界⾯都不会触发事件。
所以,我们可以在输⼊上⾯代码并回车执⾏后,⽴即⿏标放在我们需要的动态内容上⾯。
然后,我们仔细等待 5秒到了以后,界⾯就会因为执⾏了 debugger 命令⽽被冻住。
如下图所⽰:然后,我们就可以点击开发者⼯具栏的查看箭头,再去点击我们需要的内容,查看其属性了。
三、弹出对话框3.1、AlertAlert 弹出框,⽬的就是显⽰通知信息,只需⽤户看完信息后,点击 OK(确定)就可以了。
selenium模块中的常用方法及其作用Selenium是一个用于自动化浏览器操作的Python模块,主要用于测试和自动化任务。
它提供了一组丰富的方法和功能,用于模拟用户在浏览器中的操作,并获取和处理网页上的数据。
下面将介绍Selenium模块中的一些常用方法及其作用。
1. webdriver模块- WebDriver(:创建一个WebDriver实例,用于控制浏览器的行为。
- get(:打开指定的URL。
- quit(:关闭浏览器。
2. WebElement对象方法- click(:点击该元素。
- send_keys(:向该元素发送文本。
- clear(:清除该元素的文本。
3.By类常量- By.ID:通过元素的id属性定位元素。
- :通过元素的name属性定位元素。
- By.CLASS_NAME:通过元素的class属性定位元素。
- By.XPATH:通过元素的xpath定位元素。
-By.CSS_SELECTOR:通过元素的CSS选择器定位元素。
-By.PARTIAL_LINK_TEXT:通过元素的部分链接文本定位元素。
-By.LINK_TEXT:通过元素的完整链接文本定位元素。
4. WebElement对象属性- text:获取元素的文本内容。
- get_attribute(:获取元素的属性值。
- is_displayed(:判断元素是否可见。
- is_enabled(:判断元素是否可用。
5.隐式等待- implicitly_wait(:设置隐式等待时间,以秒为单位。
-在查找元素时,如果元素没有立即出现,将等待一段时间再继续查找,直到超过设定的等待时间为止。
6.显式等待- WebDriverWait(:创建WebDriverWait实例,用于等待特定条件出现。
- until(:等待直到指定的条件成立。
- expected_conditions类:包含一组预定义的条件,如元素可见、元素存在、元素可点击等。
笔记内容:(元素定位、元素操作、鼠标\键盘操作、浏览器操作、等待、多选、拖放、显示所有链接) 一、selenium webdriver简介:Watir-webdriver:是一种基于Ruby语言开发的Ruby库。
它能够使用chrome、firefox、IE 浏览器进行web测试,它可以模拟用户点击链接,填写表单,点击按钮等。
相对于其他商业工具来说,小巧、灵活的watir-webdriver所提供的功能已经足够。
二、用eclipse编写selenium脚本的方法:1、创建项目-->创建包-->导入selenium的俩个jar包之后就可以开始进行代码编写2、常用的语法:下表列出了webdriver的最常用的命令以及它的语法,这将有助于我们开发webdriver脚本。
Commmand描述driver.get("URL")导航到应用程序element.sendKeys("inputtext")输入一些文本输入框element.clear()从输入框清空内容select.deselectAll()这将取消选择页面上的第一个选择所有选项:select.selectByVisibleText("some text")select the OPTION with the input specified by the user. driver.switchTo().window("windowName")Moving the focus from one window to another driver.switchTo().frame("frameName")swing from frame to framedriver.switchTo().alert()Helps in handling alertsdriver.navigate().to("URL")Navigate to the URLdriver.navigate().forward()To Navigate forwarddriver.navigate().back()To Navigate backdriver.close()Closes the current Browser associated with the driverdriver.quit()Quits the driver and closes all the associated window of t driver.driver.refresh()Refreshes the current page.3、webdriver元素定位方法:原理:通过调用类:web driver和webelement的findelement方法来定位元素Findelements():搜索符合搜索条件的列表,如果没有找到返回空Findelement():搜索复合条件的元素,如果没有找到则抛出异常Method Syntax描述By ID driver.findElement(By.id(<element ID>))定位元素使用ID属性By name driver.findElement((<element name>))定位使用Name属性的元素By class nam e driver.findElement(By.className(<elementclass>))定位使用类属性的元素By tag name driver.findElement(By.tagName(<htmltagname>))定位使用HTML标记元素By link text driver.findElement(By.linkText(<linktext>))定位使用的链接文字链接By partial lin k text driver.findElement(By.partialLinkText(<linktext>))定位链接使用链接的文字部分By CSS driver.findElement(By.cssSelector(<css selector>))定位使用CSS选择器的元素By XPath driver.findElement(By.xpath(<xpath>))定位使用XPath查询元素4、对复选框/单选框的互动:操作:通过点击click()获取状态,返回true则是选中driver.findElement(By.id("cpayoff1")).isDisplayed() driver.findElement(By.id("cpayoff1")).isSelected() driver.findElement(By.id("cpayoff1")).isEnabled()5、同步应用程序做完一步操作时需要等待应用程序同步1)静态等待:Thread.Sleep(1000);//Will wait for 1 second.2)显示等待个明确的等待,等待某个条件进一步处理之前发生。
SeleniumWebdriver元素定位的⼋种常⽤⽅式在使⽤selenium webdriver进⾏元素定位时,通常使⽤findElement或findElements⽅法结合By类返回的元素句柄来定位元素。
其中By类的常⽤定位⽅式共⼋种,现分别介绍如下。
1. ()假设我们要测试的页⾯源码如下:<button id="gbqfba" aria-label="Google Search" name="btnK" class="gbqfba"><span id="gbqfsa">Google Search</span></button>当我们要⽤name属性来引⽤这个button并点击它时,代码如下:2. By.id()页⾯源码如下:1 <button id="gbqfba" aria-label="Google Search" name="btnK" class="gbqfba"><span id="gbqfsa">Google Search</span></button>要引⽤该button并点击它时,代码如下:1 public class SearchButtonById {23 public static void main(String[] args){45 WebDriver driver = new FirefoxDriver();67 driver.get("");89 WebElement searchBox = driver.findElement(By.id("gbqfba"));1011 searchBox.click();1213 }1415 }3. By.tagName()该⽅法可以通过元素的标签名称来查找元素。
selenium webdriver 方法Selenium WebDriver方法是用于自动化测试的一种工具,能够模拟用户的行为,实现网页的自动操作。
本文将介绍一些常用的Selenium WebDriver方法,帮助您更好地应用于自动化测试项目中。
1. find_element_by_*方法find_element_by_*方法是Selenium WebDriver提供的常用方法之一,用于根据不同的定位方式查找页面元素。
例如,可以使用find_element_by_id、find_element_by_name或find_element_by_xpath等方法根据元素的id、name或XPath定位元素。
这些方法返回的是一个WebElement对象,可以使用该对象执行一系列操作,如获取元素的属性值、文本内容,或模拟用户的点击、输入等操作。
2. send_keys方法send_keys方法用于向文本框或输入框中输入文本内容。
通过先定位到目标元素,然后使用send_keys方法将文本内容作为参数传递进去即可。
例如,可以使用find_element_by_id方法定位到一个用户名输入框,然后使用send_keys方法输入用户名。
3. click方法click方法用于模拟用户的点击操作,实现对页面元素的点击。
同样,需要先定位到目标元素,然后使用click方法执行点击操作。
例如,可以使用find_element_by_xpath方法定位到一个登录按钮,然后使用click方法模拟用户的点击操作。
4. get_attribute方法get_attribute方法用于获取页面元素的属性值。
通过先定位到目标元素,然后使用get_attribute方法并传入属性名称作为参数即可获取该元素的对应属性值。
例如,可以使用find_element_by_id方法定位到一个图片元素,然后使用get_attribute("src")方法获取该图片的链接地址。
(三) 命令和操作这一部分将介绍一下WebDriver的一些具体操作和命令,实际操作中,我们需要两大工具来帮助我们:FireBug和Xpath工具,这两者都是Firefox上的插件。
接下来我们所讲解的都是以FirefoxDriver为基础的,且基于WebDriver driver = new FirefoxDriver();创建的一个driver实例:a) 访问一个页面第一件你想使用WebDriver做的事情肯定是访问一个页面,最基础的方法是调用“get”方法:driver.get("");同样我们可以使用:driver.navigate().to("");WebDriver会自动等待到该页面完全加载才执行接下来的测试和脚本的执行。
但是如果你的页面存在很多的AJAX加载,此时WebDriver是无法知道是否完成加载。
检查此类页面是否加载完成,那么我们就需要Explicit和Implicit Wait(这两个将在后面文章解释)。
b) 定位UI元素WebDriver可以通过WebDriver实例来定位元素,任何语言库都含有“Find Element”和“Find Elements”的方法。
第一个方法返回一个WebElement或者抛出异常。
后者返回所有WebElement的列表,或者空列表。
获取和定位元素我们调用“By”方法。
下面具体解释下“By”方法:By ID这是一个极为有效定位元素的方法。
普遍的现状是UI工程师在实际编写页面时很少写id或者自动生产一个ID,这些都是需要避免的。
对于一个页面Element来说,class比自动生产的id更好。
通过id定位元素的例子:<div id="coolestWidgetEvah">...</div>WebElement element = driver.findElement(By.id("coolestWidgetEvah"));By Class Name这里的class指的是DOM中的元素,在实际使用过程中,我们也会发现很多DOM元素含有相同的class名。
webdriver常用方法Selenium WebDriver 是一种自动测试工具,它是一种自动测试的程序,可以实现网页之间的自动导航,包括对按钮、输入框等元素的检查。
Selenium WebDriver 具有良好的可移植性,可以轻松创建和运行在不同环境(操作系统或浏览器)下的测试脚本。
Selenium WebDriver 有很多有用的方法,使自动测试更加简单、稳定、快速。
以下是 Selenium WebDriver 常用方法:1. get():用于打开指定的网址,参数是字符串类型,是要打开的网址;2. close():用于关闭当前窗口;3. quit:用于关闭浏览器;4. find_element_by_id:根据元素的 ID 来查找元素;5. find_element_by_name:根据元素的 name 属性来查找元素;6. find_element_by_xpath:根据元素的 xpath 来查找元素;7. find_elements_by_xpath:根据元素的 xpath 来查找元素集合;8. submit:模拟点击表单提交按钮;9. clear:清空文本框;10. send_keys:在文本框中输入文本;这些 Selenium WebDriver 常用的方法,是自动化测试师必须了解的重要内容。
可以让我们轻松创建和运行测试脚本,降低自动化测试的复杂程度,缩短测试的时间,还可以提高 test case 的执行效率。
不仅如此,使用 Selenium WebDriver 还可以创建一个独特的测试框架,让我们可以根据需求来定义和控制自动化测试脚本。
总之,Selenium WebDriver 是一款非常有用并且强大的自动化测试工具,可以大大降低测试人员的繁琐工作性,发挥自动化测试的优势,提高产品的质量。
因此,大家在熟练掌握 Selenium WebDriver的同时,也要学习其中的常用方法,用好它们才能更好地服务于产品开发和质量检测。
浏览器处理自动化个人实训总结
在浏览器处理自动化个人实训中,我学到了许多有关浏览器处理自动化的技术和方法。
首先,我们使用了Selenium WebDriver工具进行自动化测试。
Selenium WebDriver是一个强大的工具,可以模拟用户在浏览
器中的各种操作,如点击、输入、选择等。
我们通过学习Selenium WebDriver的API和使用方法,能够编写自动化测试
脚本,实现对网页的自动化操作。
其次,我们学习了使用XPath和CSS选择器来定位页面元素。
在自动化测试中,定位页面元素是非常重要的一步。
XPath和CSS选择器能够准确地定位到页面中的某个元素,使得我们能够对该元素进行各种操作。
通过学习XPath和CSS选择器的
语法和使用方法,我们能够更加准确地定位页面元素,提高自动化测试的稳定性和可靠性。
此外,我们还学习了如何处理浏览器的弹窗和多窗口。
在自动化测试中,浏览器可能会弹出各种弹窗,如警告框、确认框和提示框等。
我们需要学习如何处理这些弹窗,以便正确地进行自动化操作。
另外,有些网页可能会打开多个窗口,我们需要学习如何切换窗口,并在不同的窗口中进行操作。
最后,通过这个个人实训,我对浏览器处理自动化有了更深入的了解。
我能够编写自动化测试脚本,对各种操作进行自动化处理。
我也能够使用XPath和CSS选择器准确地定位页面元素。
此外,我还学会了如何处理浏览器的弹窗和多窗口。
这些
技能对我来说非常宝贵,将来在工作中能够更好地运用浏览器处理自动化技术。
selenium方法的使用Selenium是一种用于自动化网页行为的脚本语言。
下面是一些常用的Selenium方法:1. `Selenium.等待事件(事件类型)`:可以等待指定事件的发生,如按下键盘上的特定键、鼠标点击等。
例如:```javaSelenium selenium = new Selenium();Selenium.等待事件(Selenium.EVENT_KEYDOWN, 1000);```2. `Selenium.点击事件(事件类型)`:可以点击指定位置的按钮或其他元素。
例如:```javaSelenium selenium = new Selenium();Selenium.点击事件(Selenium.EVENT_BUTTON,selenium.getButton("button1"));```3. `Selenium.移动事件(事件类型)`:可以向指定位置移动鼠标或键盘。
例如:```javaSelenium selenium = new Selenium();Selenium.移动事件(Selenium.EVENT_LEFTDOWN,10,Selenium.EVENT_LEFTUP, 10);```4. `Selenium.搜索事件(事件类型)`:可以搜索指定范围内的目标元素。
例如:```javaSelenium selenium = newSelenium();Selenium.搜索事件(Selenium.EVENT_SELECT,Selenium.HTML_SELECTOR, 0, 0, 10);```5. `Selenium.打开事件(事件类型)`:可以打开指定链接或网页。
例如:```javaSelenium selenium = new Selenium();Selenium.打开事件(Selenium.EVENT_HTML_打开,Selenium.URL_链接);```以上是一些常用的Selenium方法,还有其他方法可以使用,可以根据具体的需求来使用。
PythonSeleniumWebdriver常⽤⽅法总结常⽤⽅法函数1. 加载浏览器驱动: webdriver.Firefox()2. 打开页⾯:get()3. 关闭浏览器:quit()4. 最⼤化窗⼝: maximize_window()5. 设置窗⼝参数:set_window_size(600,800)6. 后退到前⼀页: back()7. 前进到后⼀页: forward()8. 刷新页⾯: refresh()9. 元素定位:1. 1,id定位:find_element_by_id()2,name定位:find_element_by_name()3,class定位:find_element_by_class()4,tag定位:find_element_by_tag_name()5,link定位:find_element_by_link_text()6,partial link 定位: find_element_by_partial_link_text()7,CSS定位:find_element_by_css_selector()8,Xpath定位:绝对路径:find_element_by_xpath("/html/body/div[x]/div[x]/div/div/dl[x]/dt/a")元素属性:find_element_by_xpath("//unput[@id=‘kw’]")层级与属性结合:find_element_by_xpath("//form[@id=‘loginForm’]/ul/input[1]")逻辑运算符:find_element_by_xpath("//input[@id=‘kw’ and@class=‘s_ipt’]")10. 清除⽂本:clear()11. 模拟按键输⼊:send_keys(*value)11.模拟按键输⼊:send_keys(*value)12. 单击元素:click()13. 提交表单(相当于"回车"):submit()14. ⿏标事件:#coding:utf-8from mon.action_chains import ActionChainsActionChains(driver).***opration(opra)*** .perform()elemengt = driver.find_element_by_xpath("xpath")ActionChains(driver). double_click(DoubleClick) .perform()#双击ActionChains(driver). context_click(RightClick) .perform()#右击ActionChains(driver). drag_and_drop(Start, End) .perform()#拖放ActionChains(driver). move_to_element(Above) .perform()#悬停ActionChains(driver). click_and_hold(leftclick) .perform()#按下键盘相关:1. 键盘事件:send_keys(Keys.BACK_SPACE) = BackSpacesend_keys(Keys.SPACE) = Spacesend_keys(Keys.TAB) = Tabsend_keys(Keys.ESCAPE) = Escsend_keys(Keys.ENTER) = Entersend_keys(Keys.CONTROL,‘a’) = Ctrl+Asend_keys(Keys.F1) = 键盘F12. 元素等待:显⽰等待#coding=utf-8from selenium import webdriverfrom mon.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECbase_url = ""driver = webdriver.Firefox()driver.implicitly_wait(5)'''隐式等待和显⽰等待都存在时,超时时间取⼆者中较⼤的'''locator = (By.ID,'kw')driver.get(base_url)WebDriverWait(driver,10).until(EC.title_is(u"百度⼀下,你就知道"))'''判断title,返回布尔值'''WebDriverWait(driver,10).until(EC.title_contains(u"百度⼀下"))'''判断title,返回布尔值'''WebDriverWait(driver,10).until(EC.presence_of_element_located((By.ID,'kw')))'''判断某个元素是否被加到了dom树⾥,并不代表该元素⼀定可见,如果定位到就返回WebElement'''WebDriverWait(driver,10).until(EC.visibility_of_element_located((By.ID,'su')))'''判断某个元素是否被添加到了dom⾥并且可见,可见代表元素可显⽰且宽和⾼都⼤于0'''WebDriverWait(driver,10).until(EC.visibility_of(driver.find_element(by=By.ID,value='kw')))'''判断元素是否可见,如果可见就返回这个元素'''WebDriverWait(driver,10).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR,'.mnav')))'''判断是否⾄少有1个元素存在于dom树中,如果定位到就返回列表'''WebDriverWait(driver,10).until(EC.visibility_of_any_elements_located((By.CSS_SELECTOR,'.mnav')))'''判断是否⾄少有⼀个元素在页⾯中可见,如果定位到就返回列表'''WebDriverWait(driver,10).until(EC.text_to_be_present_in_element((By.XPATH,"//*[@id='u1']/a[8]"),u'设置'))'''判断指定的元素中是否包含了预期的字符串,返回布尔值'''WebDriverWait(driver,10).until(EC.text_to_be_present_in_element_value((By.CSS_SELECTOR,'#su'),u'百度⼀下'))'''判断指定元素的属性值中是否包含了预期的字符串,返回布尔值'''#WebDriverWait(driver,10).until(EC.frame_to_be_available_and_switch_to_it(locator))'''判断该frame是否可以switch进去,如果可以的话,返回True并且switch进去,否则返回False'''#注意这⾥并没有⼀个frame可以切换进去WebDriverWait(driver,10).until(EC.invisibility_of_element_located((By.CSS_SELECTOR,'#swfEveryCookieWrap')))'''判断某个元素在是否存在于dom或不可见,如果可见返回False,不可见返回这个元素'''#注意#swfEveryCookieWrap在此页⾯中是⼀个隐藏的元素WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,"//*[@id='u1']/a[8]"))).click()'''判断某个元素中是否可见并且是enable的,代表可点击'''driver.find_element_by_xpath("//*[@id='wrapper']/div[6]/a[1]").click()#WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,"//*[@id='wrapper']/div[6]/a[1]"))).click()#WebDriverWait(driver,10).until(EC.staleness_of(driver.find_element(By.ID,'su')))'''等待某个元素从dom树中移除'''#这⾥没有找到合适的例⼦WebDriverWait(driver,10).until(EC.element_to_be_selected(driver.find_element(By.XPATH,"//*[@id='nr']/option[1]")))'''判断某个元素是否被选中了,⼀般⽤在下拉列表'''WebDriverWait(driver,10).until(EC.element_selection_state_to_be(driver.find_element(By.XPATH,"//*[@id='nr']/option[1]"),True)) '''判断某个元素的选中状态是否符合预期'''WebDriverWait(driver,10).until(EC.element_located_selection_state_to_be((By.XPATH,"//*[@id='nr']/option[1]"),True))'''判断某个元素的选中状态是否符合预期'''driver.find_element_by_xpath(".//*[@id='gxszButton']/a[1]").click()instance = WebDriverWait(driver,10).until(EC.alert_is_present())'''判断页⾯上是否存在alert,如果有就切换到alert并返回alert的内容'''print(instance.text)instance.accept()driver.close()2. 隐式等待from mon.exceptions import NoSuchElementExceptiondrive.implicitly_wait(10)表单窗⼝相关操作1. 多表单切换:switch_to.frame()2. 多窗⼝切换:switch_to.window()当前句柄:current_window_handle所有句柄:window_handles3. 警告框处理:switch_to_alert()text:返回所有alert/confirm/prompt中的⽂字信息accept():接受现有警告框dismiss():解散现有警告框send_keys(keysToSend):发送⽂本⾄警告框4. cookie处理:get_cookies():获得所有cookie信息get_cookie(name):返回字典的key为“name”的cookie信息add_cookie(cookie_dict):添加cookie。
鲁德培训/软件测试学习Selenium webdriver教程常用命令汇总这段时间使用selenium webdriver做UI自动化,积累了一些心得,汇总了常用的命令。
1、查找某个元素是否存在:bot.existElement(By.xpath("//a[contains(text(),'宁波测试商品002')]"))2、根据xpath断言某个元素是否存在:Assert.assertEquals(bot.findElements(By.xpath("//div[@class='g-group-name']/span")).get(0).getText(),"H1237","合伙人小队页面错误!"); //index从0开始3、根据classname断言某个元素是否存在:Assert.assertEquals(bot.findElements(By.className("col-name")).get(1).getText(),"赵利群","设置默认地址失败!");4、尝试多种方法定位元素:()、By.id()、By.className()、By.linkText()、By.xpath()、By.tagName()、By.cssSelector()5、如果还是定位不到,可能是因为该元素存在iframe里,需要先定位iframe再定位元素:bot.typeInFrame(By.id("yueForm"),By.xpath("//input[@id='OTPCtl2']"),wybpassword);bot.clickInFrame(By.id("yueForm"),By.id("bankCardSumbit"));6、type失败时,可尝试先使用click点击输入框,然后使用type:bot.click(By.xpath("id('J_streetBox')/textarea"));//点击输入框bot.type(("street"), newaddress);//修改地址7、切换窗口:bot.changeWindow(1);//index从0开始8、比较跳转后url是否正确:pareUrl(1,"/cart.html?from=Repeat_purchase")9、有时用seleniumIDE可以实现replay操作,但是webdriver不行,增加等待时间或许可以解决问题:bot.wait(5);//0.1秒为单位。
selenium模块中的常用方法及其作用Selenium是一个用于自动化测试的工具,它提供了一组用于对Web 应用程序进行操作的API。
Selenium模块中包含了许多常用的方法,这些方法可以用于实现自动化测试过程中的各种功能。
下面将介绍一些常用的Selenium方法及其作用。
1. get(url):用于打开指定URL的网页。
作用:打开指定的URL页面,便于后续操作。
2. find_element(by=, value=):用于定位页面元素。
作用:通过定位器定位页面中的元素,便于后续对元素进行操作。
3. send_keys(value):用于向页面元素发送文本。
作用:向定位到的页面元素发送指定的文本内容。
4. click(:用于点击页面元素。
作用:模拟用户点击定位到的页面元素。
5. clear(:用于清空文本框中的内容。
作用:清空定位到的文本框中的文本内容。
6. submit(:用于提交表单。
作用:提交定位到的表单。
7. get_attribute(name):用于获取元素的属性值。
作用:获取定位到的元素的指定属性的值。
8. is_displayed(:用于判断元素是否可见。
作用:判断定位到的元素是否在当前屏幕上可见。
9. is_enabled(:用于判断元素是否可用。
作用:判断定位到的元素是否可用,即是否可以进行操作。
10. text(:用于获取元素的文本内容。
作用:获取定位到的元素的文本内容。
11. select_by_visible_text(text):用于根据可见文本选择下拉选项。
作用:从定位到的下拉菜单中根据可见文本选择指定的选项。
12. select_by_value(value):用于根据value属性选择下拉选项。
作用:从定位到的下拉菜单中根据value属性的值选择指定的选项。
13. switch_to_frame(frame_reference):用于切换到指定的frame。
selenium动作链用法Selenium动作链是Selenium WebDriver中的一个功能,它允许用户执行复杂的用户交互操作,比如鼠标移动、拖放、键盘输入等。
动作链通常用于模拟用户在网页上的交互行为,比如鼠标悬停、拖拽等操作。
下面我会从不同的角度来详细介绍Selenium动作链的用法。
1. 鼠标操作,Selenium动作链可以用来模拟鼠标操作,比如鼠标移动到某个元素上、点击某个元素、双击某个元素等。
这些操作可以通过动作链对象的方法来实现,比如move_to_element()、click()、double_click()等。
2. 键盘操作,动作链也可以用来模拟键盘操作,比如输入文本、按下某个键、释放某个键等。
通过send_keys()方法可以实现在输入框中输入文本,通过key_down()和key_up()方法可以模拟按下和释放键盘按键。
3. 复合操作,动作链还可以用来执行复合操作,比如拖拽元素、按住某个元素并移动等。
这些复合操作可以通过drag_and_drop()、click_and_hold()等方法来实现。
4. 组合操作,动作链还支持将多个操作组合起来执行,比如先移动到某个元素上,然后点击该元素,最后再输入文本。
这可以通过将多个动作依次添加到动作链中来实现。
总的来说,Selenium动作链提供了丰富的方法来模拟用户在网页上的交互行为,可以灵活地执行各种鼠标、键盘和复合操作。
通过合理地运用动作链,可以实现更加真实和复杂的自动化测试场景,提高测试的覆盖范围和准确性。
希望以上内容能够帮助你更好地理解Selenium动作链的用法。
WebDriver中的api总结--关于⿏标、键盘事件⿏标事件在使⽤⿏标操作之前要先导⼊存放这些⽅法的类ActionChains,下⾯练习⼀个在百度⾸页悬停设置元素的列⼦,完整的导⼊写法如下:#coding=utf-8from selenium import webdriverfrom mon.action_chains import ActionChainsdriver = webdriver.Chrome()driver.get("")#定位到要悬停的元素,百度搜索页⾯的设置元素above = driver.find_element_by_xpath("//div[@id='u1']/a[@name='tj_settingicon']")#对定位到的元素执⾏悬停操作ActionChains(driver).move_to_element(above).perform()driver.quit()print"运⾏完成!"其他的⿏标操作与上⾯的使⽤⽅法类似:右击ActionChains(driver).context_click(element).perform;双击ActionChains(driver).double_click(element).perform();拖拽ActionChains(driver).drag_and_drop(element,target).perform()。
键盘事件和⿏标操作⼀样,键盘操作也是放在⼀个封装好的类中,这个类是 Keys。
下⾯⽤⼀个例⼦来认识常见的键盘操作:#coding=utf-8from selenium import webdriverfrom mon.keys import Keysdriver = webdriver.Chrome()driver.get("")#输⼊框输⼊内容driver.find_element_by_id("kw").send_keys("seleniumm")#删除多输⼊的⼀个mdriver.find_element_by_id("kw").send_keys(Keys.BACK_SPACE)#输⼊空格+“教程”driver.find_element_by_id("kw").send_keys(Keys.SPACE)driver.find_element_by_id("kw").send_keys(u"教程")#全选输⼊框内容driver.find_element_by_id("kw").send_keys(Keys.CONTROL, 'A')#剪切全中的内容driver.find_element_by_id("kw").send_keys(Keys.CONTROL, 'X')#将剪切的内容复制到输⼊框driver.find_element_by_id("kw").send_keys(Keys.CONTROL, 'V')#通过回车键来代替点击操作driver.find_element_by_id("kw").send_keys(Keys.ENTER)driver.quit()print"运⾏成功!"上⾯的列⼦涵盖了⼀些基本的操作其他能想到的操作⼤家可以查询Keys 这个类来学习哦。
Selenium4系列-⿏标、键盘操作详细解读有哪些⿏标操作呢?执⾏操作左键、右键单击、双击⿏标悬停到元素、偏移处长按拖动点击右边⽬录即可跳转哦! -------------->>>>>>>>>>act.moveToElement(link).contextClick().sendKeys(Keys.ArrowsDown).build().perform();执⾏操作perform() ⽅法主要是调⽤其他操作⽅法后,都要再次调⽤这个⽅法,表⽰执⾏某个⿏标操作,后⾯会有例⼦左键、右键单击、双击from selenium.webdriver import ActionChainsfrom selenium import webdriverdriver = webdriver.Chrome("../resources/chromedriver.exe")# 创建实例chains = ActionChains(driver)# 访问⽹址driver.get("file:///C:/test.html")# 登录按钮username = driver.find_element_by_id("username")login_btn = driver.find_element_by_class_name("login")password = driver.find_element_by_id("password")# 左键点击chains.click(username).perform()# 右键点击chains.context_click(username).perform()# 双击chains.double_click(password).perform()⿏标悬停到元素、偏移处# 悬停到设置按钮chains.move_to_element(login_btn).perform()# 悬停到指定偏移量chains.move_to_element_with_offset(login_btn, 2, 2).perform()知识点move_to_element_with_offset() 是先找到元素,再根据元素位置偏移指定偏移量长按# 长按chains.click_and_hold(login_btn).perform()拖动# 拖动1chains.drag_and_drop(source=username, target=password)# 拖动2chains.drag_and_drop_by_offset(source=username, xoffset=20, yoffset=20)知识点drag_and_drop 将源元素拖动到⽬标元素处drag_and_drop_by_offset 将源元素拖动指定偏移量有什么键盘操作?删除键空格键制表键回退键回车键全选复制剪切粘贴F1-F12......其实就是所有键盘都能模拟,包括alt、shift、insert、delete、home等等等...这⾥就不举例了,看源码很容易懂#!/usr/bin/env python# -*- coding: utf-8 -*-from time import sleepfrom selenium import webdriverfrom mon.keys import Keysdriver = webdriver.Chrome("../resources/chromedriver.exe")driver.maximize_window()# 访问⽹址driver.get("")# 找到搜索框inputElement = driver.find_element_by_id("kw")# 输⼊搜索内容inputElement.send_keys("锐洋智能")# ctrl+a全选inputElement.send_keys(Keys.CONTROL, "a")sleep(1)# ctrl+c 复制输⼊框内容inputElement.send_keys(Keys.CONTROL, 'c')sleep(1)# ctrl+x 剪切输⼊框内容inputElement.send_keys(Keys.CONTROL, 'x')sleep(1)# ctrl+v 粘贴输⼊框内容inputElement.send_keys(Keys.CONTROL, 'v')sleep(1)# 空格键inputElement.send_keys(Keys.SPACE)sleep(1)# 后退键inputElement.send_keys(Keys.BACKSPACE) sleep(1)# tab键inputElement.send_keys(Keys.TAB)sleep(1)# 回车键inputElement.send_keys(Keys.ENTER)# 刷新页⾯inputElement.send_keys(Keys.F5)。
python+selenium⿏标事件操作⽅法⼀、前⾔除了可以使⽤ click( ) 来模拟⿏标的单击操作,现在Web产品中还提供了更丰富的⿏标交互⽅式,例如⿏标右键、双击、悬停、拖动等功能,在WebDriver中,将这些关于⿏标操作的⽅法都封装在 ActionChains 类中。
ActionChains 类提供了⿏标操作的常⽤⽅法:perform()执⾏所有ActionChains中存储的⾏为context_click()右击double_click()双击drag_and_drop()拖动move_to_element()⿏标悬停⼆、详细使⽤1.⿏标右击操作from selenium import webdriver#引⼊ActionChains类from mon.action_chains import ActionChainsdriver = webdriver.Chrome()driver.get("url")#......#定位到需要右击的元素right_click = driver.find_element_by_id("id")#对元素进⾏右击操作ActionChains(driver).context_click(right_click).perform()#......ActionChains(driver):调⽤ActionChains类,将浏览器驱动driver作为参数传⼊;perform():执⾏所有ActionChains中存储的⾏为,可以理解成是对整个操作的提交动作;2.⿏标悬停move_to_element()⽅法可以模拟⿏标悬停的动作,其⽤法与context_click()相同;from selenium import webdriver#引⼊ActionChains类from mon.action_chains import ActionChainsdriver = webdriver.Chrome()driver.get("url")#......#定位到需要悬停的元素above = driver.find_element_by_id("id")#对元素进⾏右击操作ActionChains(driver).move_to_element(above).perform()#......3.⿏标双击double_click() ⽅法⽤于模拟⿏标双击操作;from selenium import webdriver#引⼊ActionChains类from mon.action_chains import ActionChainsdriver = webdriver.Chrome()driver.get("url")#......#定位到需要双击的元素double_click = driver.find_element_by_id("id")#对元素进⾏右击操作ActionChains(driver).double_click(double_click).perform()#......4.⿏标拖动操作drag_and_drop(source,target) 在源位置元素上按住⿏标左键,然后移动到⽬标元素上释放。
【Selenium02篇】python+selenium实现Web⾃动化:⿏标操作和键盘操作!⼀、前⾔最近问我⾃动化的⼈确实有点多,个⼈突发奇想:想从0开始讲解python+selenium实现Web⾃动化测试,请关注博客持续更新!这是python+selenium实现Web⾃动化第⼆篇博⽂⼆、Selenium成套博⽂地址,总有你需要的:【Selenium篇01】python+selenium实现Web⾃动化:搭建环境,Selenium原理,定位元素以及浏览器常规操作!【Selenium02篇】python+selenium实现Web⾃动化:⿏标操作和键盘操作!【Selenium03篇】python+selenium实现Web⾃动化:元素三类等待,多窗⼝切换,警告框处理,下拉框选择【Selenium04篇】python+selenium实现Web⾃动化:⽂件上传,Cookie操作,调⽤ JavaScript,窗⼝截图【Selenium05篇】python+selenium实现Web⾃动化:读取ini配置⽂件,元素封装,代码封装,异常处理,兼容多浏览器执⾏【Selenium06篇】python+selenium实现Web⾃动化:⽇志处理【Selenium07篇】python+selenium实现Web⾃动化:PO模型,PageObject模式!【Selenium08篇】python+selenium实现Web⾃动化:数据驱动框架,ddt,关键字驱动三、Selenium之⿏标操作和键盘操作1.⿏标事件在webdriver中,⿏标操作的⽅法封装在 ActionChains 类提供。
ActionChains类提供了⿏标操作的常⽤⽅法:ActionChains(driver),将浏览器驱动 driver 作为参数传⼊。
(1) perform(): 执⾏所有 ActionChains 中存储的⾏为,是对整个操作的提交动作;(2) context_click(): 右击(3) double_click(): 双击(4) drag_and_drop(): 拖动(5) move_to_element(): ⿏标悬停,在调⽤时需要指定元素定位具体代码如下:#!/usr/bin/env python# -*- encoding: utf-8 -*-"""@Time : 2020/4/15@Author : 公众号:软测之家更多技术⼲货,软测视频,⾯试资料请关注!@Contact : 软件测试技术群:695458161@License : (C)Copyright 2017-2019, Micro-Circle"""from selenium import webdriverfrom mon.action_chains import ActionChainsimport timebase_url = '/'browser = webdriver.Chrome('../tools/chromedriver.exe')browser.get(base_url)# 定位到悬停元素处above = browser.find_element_by_link_text('设置')# 对元素执⾏⿏标悬停操作ActionChains(browser).move_to_element(above).perform()time.sleep(5)# 右击ActionChains(browser).context_click().perform()time.sleep(5)# 定位到要双击的元素处# double_click_element = browser.find_element_by_link_text('新闻')# print(double_click_element)# ActionChains(browser).move_to_element(double_click_element).double_click().perform()# time.sleep(5)# 拖动元素drag_and_drop_element = browser.find_element_by_link_text('地图')ActionChains(browser).move_to_element(drag_and_drop_element).drag_and_drop().perform()time.sleep(5)browser.quit()2.键盘事件前⾯的 send_keys() ⽅法⽤来模拟键盘输⼊;keys() 类提供了键盘上⼏乎所有按键的⽅法,组合键也是可以的。
《selenium2python自动化测试实战》(5)——键盘事件
键盘事件,就是键盘上的一些操作,比如Ctrl +C,Ctrl+V,Ctrl+X等。
对键盘的操作需要导入另一个键盘的库:
举个例子,你要在搜索框输入“自动化测试”,但是现在又想搜“自动化测”,就是删掉一个字,我们知道,就是摁一下键盘上的Backspace键就可以了,这时候你就需要键盘操作了:
这样就可以了。
接下来来段代码,大家就记住了:
了解以上内容就差不多了,如果遇到新的需要只需要百度一下,要知道我们不可能把所有东西都记在脑子里的,只要入门了,知道怎么百度了,那目的就算是达到了,当然了,如果你都能记住,那你就更厉害了,反正我是记不住……。
本文将总结Selenium WebDriver 中的一些鼠标和键盘事件的使用,以及组合键的使用,并且将介绍WebDriver 中没有实现的键盘事件(Keys 枚举中没有列举的按键)的扩展。
举例说明扩展Alt+PrtSc 组合键来截取当前活动窗口并将剪切板图像保存到文件。
在使用Selenium WebDriver 做自动化测试的时候,会经常模拟鼠标和键盘的一些行为。
比如使用鼠标单击、双击、右击、拖拽等动作;或者键盘输入、快捷键使用、组合键使用等模拟键盘的操作。
在WebDeriver 中,有一个专门的类来负责实现这些测试场景,那就是Actions 类,在使用该类的过程中会配合使用到Keys 枚举以及Mouse、Keyboard、CompositeAction 等类。
其次,在实际测试过程中,可能会遇到某些按键没办法使用Actions、Keys 等类来实现的情况。
比如通过使用Alt+PrtSc 组合键来实现截取屏幕当前活动窗口的图像,在Keys 枚举中,因为没有枚举出PrtSc 键,所以没办法通过Action 的KeyDown(Keys) 来模拟按下这个动作。
再次是在自动化测试中,可能会遇到一些附件、文件上传的场景,或者是多文件上传,这些在Selenium2.0 之后,可以直接使用WebElement 类的sendKeys() 方法来实现。
下面就分别介绍这些情况的具体使用。
鼠标点击操作鼠标点击事件有以下几种类型:清单1. 鼠标左键点击Actions action = new Actions(driver);action.click();// 鼠标左键在当前停留的位置做单击操作action.click(driver.findElement((element)))// 鼠标左键点击指定的元素清单2. 鼠标右键点击Actions action = new Actions(driver);action.contextClick();// 鼠标右键在当前停留的位置做单击操作action.contextClick(driver.findElement((element)))// 鼠标右键点击指定的元素清单3. 鼠标双击操作Actions action = new Actions(driver);action.doubleClick();// 鼠标在当前停留的位置做双击操作action.doubleClick(driver.findElement((element)))// 鼠标双击指定的元素清单4. 鼠标拖拽动作Actions action = new Actions(driver);// 鼠标拖拽动作,将 source 元素拖放到 target 元素的位置。
action.dragAndDrop(source,target);// 鼠标拖拽动作,将 source 元素拖放到 (xOffset, yOffset) 位置,其中 xOffset 为横坐标,yOffset 为纵坐标。
action.dragAndDrop(source,xOffset,yOffset);在这个拖拽的过程中,已经使用到了鼠标的组合动作,首先是鼠标点击并按住(click-and-hold) source 元素,然后执行鼠标移动动作(mouse move),移动到target 元素位置或者是(xOffset, yOffset) 位置,再执行鼠标的释放动作(mouse release)。
所以上面的方法也可以拆分成以下的几个执行动作来完成:action.clickAndHold(source).moveToElement(target).perform();action.release();清单5. 鼠标悬停操作Actions action = new Actions(driver);action.clickAndHold();// 鼠标悬停在当前位置,既点击并且不释放action.clickAndHold(onElement);// 鼠标悬停在 onElement 元素的位置action.clickAndHold(onElement) 这个方法实际上是执行了两个动作,首先是鼠标移动到元素onElement,然后再clickAndHold, 所以这个方法也可以写成action.moveToElement(onElement).clickAndHold()。
清单6. 鼠标移动操作Actions action = new Actions(driver);action.moveToElement(toElement);// 将鼠标移到 toElement 元素中点// 将鼠标移到元素 toElement 的 (xOffset, yOffset) 位置,//这里的 (xOffset, yOffset) 是以元素 toElement 的左上角为 (0,0) 开始的 (x, y) 坐标轴。
action.moveToElement(toElement,xOffset,yOffset)// 以鼠标当前位置或者 (0,0) 为中心开始移动到 (xOffset, yOffset) 坐标轴action.moveByOffset(xOffset,yOffset);action.moveByOffset(xOffset,yOffset) 这里需要注意,如果xOffset 为负数,表示横坐标向左移动,yOffset 为负数表示纵坐标向上移动。
而且如果这两个值大于当前屏幕的大小,鼠标只能移到屏幕最边界的位置同时抛出MoveTargetOutOfBoundsExecption 的异常。
鼠标移动操作在测试环境中比较常用到的场景是需要获取某元素的flyover/tips,实际应用中很多flyover 只有当鼠标移动到这个元素之后才出现,所以这个时候通过执行moveToElement(toElement) 操作,就能达到预期的效果。
但是根据我个人的经验,这个方法对于某些特定产品的图标,图像之类的flyover/tips 也不起作用,虽然在手动操作的时候移动鼠标到这些图标上面可以出现flyover, 但是当使用WebDriver 来模拟这一移动操作时,虽然方法成功执行了,但是flyover 却出不来。
所以在实际应用中,还需要对具体的产品页面做相应的处理。
清单7. 鼠标释放操Actions action = new Actions(driver);action.release();// 释放鼠标键盘模拟操作对于键盘的模拟操作,Actions 类中有提供keyUp(theKey)、keyDown(theKey)、sendKeys(keysToSend) 等方法来实现。
键盘的操作有普通键盘和修饰键盘(Modifier Keys, 下面的章节将讲到修饰键的概念)两种:1. 对于普通键盘,使用sendKeys(keysToSend) 就可以实现,比如按键TAB、Backspace 等。
清单8. 普通键盘模拟sendKeys(keysToSend)Actions action = new Actions(driver);action.sendKeys(Keys.TAB);// 模拟按下并释放 TAB 键action.sendKeys(Keys.SPACE);// 模拟按下并释放空格键/***针对某个元素发出某个键盘的按键操作,或者是输入操作,比如在 input 框中输入某个字符也可以使用这个方法。
这个方法也可以拆分成:action.click(element).sendKeys(keysToSend)。
*/action.sendKeys(element,keysToSend);注意除了Actions 类有sendKeys(keysToSend)方法外,WebElement 类也有一个sendKeys(keysToSend)方法,这两个方法对于一般的输入操作基本上相同,不同点在于以下几点:∙Actions 中的sendKeys(keysToSend) 对于修饰键(Modifier Keys) 的调用并不会释放,也就是说当调用actions.sendKeys(Keys.ALT); actions.sendKeys(Keys.CONTROL);action.sendKeys(Keys.SHIFT); 的时候,相当于调用actions.keyDown(keysToSend),而如果在现实的应用中想要模拟按下并且释放这些修饰键,应该再调用action.sendKeys(keys.NULL) 来完成这个动作。
∙其次就是当Actions 的sendKeys(keysToSend) 执行完之后,焦点就不在当前元素了。
所以我们可以使用sendKeys(Keys.TAB) 来切换元素的焦点,从而达到选择元素的作用,这个最常用到的场景就是在用户名和密码的输入过程中。
∙第三点,在WebDriver 中,我们可以使用WebElement 类的sendKeys(keysToSend) 来上传附件,比如element.sendKeys(“C:\\test\\uploadfile\\t est.jpg”); 这个操作将test.jpg 上传到服务器,但是使用:Actions action = New Actions(driver);action.sendKeys(element,“C:\\test\\upload\\test.jpg”);action.click(element).sendKeys(“C:\\test\\upload\\test.jpg”);这种方式是上传不成功的,虽然WebDriver 在执行这条语句的时候不会出错,但是实际上并没有将文件上传。
所以要上传文件,还是应该使用前面一种方式。
2.对于修饰键(Modifier keys),一般都是跟普通键组合使用的。
比如Ctrl+a、Alt+F4、Shift+Ctrl+F 等等。
∙这里先解释一下修饰键的概念,修饰键是键盘上的一个或者一组特别的键,当它与一般按键同时使用的时候,用来临时改变一般键盘的普通行为。
对于单独按下修饰键本身一般不会触发任何键盘事件。
在个人计算机上的键盘上,有以下几个修饰键:Shift、Ctrl、Alt(Option)、AltGr、Windows logo、Command、FN(Function)。
但是在WebDriver 中,一般的修饰键指前面三个。
你可以点击下面的Wiki 链接去了解更多有关修饰键的信息,Modifier key。
回到上面的话题,在WebDriver 中对于修饰键的使用需要用到KeyDown(theKey)、keyUp(theKey) 方法来操作。