Selenium webdriver教程常用命令汇总
selenium-webdriver简单教程
selenium-webdriver简单教程ruby环境下selenium/webdriver可以通过selenium-webdriver.gem包进⾏安装gem install selenium-webdriver⽀持语⾔及版本有ruby 1.8.7~1.9.2,jrbuy和rubiniusselenium-webdriver包含了selenium-client,在阅读的时候,要注意它们两个命名空间是在两不同的API⾥:1.Selenium::WebDriver - WebDrver API2.Selenium::Client - Selenium RC APIWebDrver API是继承⾃Selenium RC API,所以没有必要在Selenium RC API花⼤量的时间,我们可以直接从Selenium::WebDriver开始,并围绕两个⼤类:Seleniu::WebDriver:Driver 和Selenium::WebDriver::Element,这是整个WebDriver API的⼊⼝。
API 例⼦:⼀个简单的例⼦:require "selenium-webdriver"driver = Selenium::WebDriver.for :firefoxdriver.navigate.to ""element = driver.find_element(:name,'q')element.send_keys "Hello WebDriver"element.submitputs driver.titledriver.quitDriver 例⼦:# 应⽤javascriptputs driver.execute_script("return window.location.pathname")# 利⽤ruby和js获取元素element = driver.execut_script("return document.body")driver.execut_script("return arguments[0].tagname", element) #=> "BODY"# 等待⼀些特殊元素的出现wait = Selenium::WebDriver::Wait.new(:timeout=>10) # secondswait.until{driver.find_element(:id,"foo")}# 注:wait在new时,可以设置三个值,分别为:timeout(默认5秒),:message(默认nil),:interval(默认0.5)# 选择framedriver.switch_to.frame "some-frame" # name或iddriver.switch_to.frame driver.find_element(:id, 'some-frame') # frame# 注:switch_to⽅法不仅可以选择frame,还可以处理window,alert,comfirmation等窗⼝# 选择回主窗⼝driver.swith_to.default_contentElement 例⼦:# 获取元素属性class_name = element.attribute("class")# 判断元素是否显⽰element.displayed?# 获取元素在页⾯上的相对坐标位置element.locationelement.location.xelement.location.y# 将元素滚动到视频可以显⽰的位置,再返回元素的相对坐标element.location_once_scrolled_into_view# 获取元素的宽和⾼element.size# 在元素⾥输⼊空,参看Selenium::WebDriver::Keys输⼊值element.send_keys :spaceelement.send_keys "tet", :arrow_left, "s" #=> "test", 先输⼊ tet, 再输⼊⼀次左⽅向键,再输⼊selement.send_keys [:control, 'a'], "1" #=> "1", 先输⼊crtl+a,再输⼊1# 获取元素⽂本element.text更⾼级的⽤法(见 ActionBuilder)driver.action.key_down(:shift).click(element).double_click(second_element).key_up(:shift).drag_and_drop(element,third_element).perform启动chrome浏览器的⽅法1.下载并运⾏,如图2.启动chromedriver = Selenium::WebDriver.for :remote, :url=>"http://localhost:9515"driver.get ""其它操作⼀样。
java selenium webdriver 常用方法
java selenium webdriver 常用方法
1. **`driver.get()`**:用于打开指定的 URL。
2. **`driver.findElement(By locator)`**:通过定位策略(如 ID、CSS 选择器、XPATH 等)查找元素。
3. **`driver.findElement(By locator).click()`**:点击找到的元素。
4. **`driver.findElement(By locator).sendKeys(keys)`**:向找到的元素发送键盘按键。
5. **`driver.findElement(By locator).clear()`**:清除找到的元素的内容。
6. **`driver.findElement(By locator).getText()`**:获取找到的元素的文本内容。
7. **`driver.manage().window_handles`**:获取当前打开的所有窗口的句柄。
8. **`driver.switchTo().window(handle)`**:切换到指定窗口的句柄。
9. **`driver.getTitle()`**:获取当前页面的标题。
10. **`driver.close()`**:关闭当前窗口。
11. **`driver.quit()`**:关闭所有窗口并退出 WebDriver 实例。
这只是 Selenium Webdriver 的一些常用方法的示例,还有许多其他方法可用于执行更高级的操作,例如等待元素出现、处理弹出窗口、断言等。
具体使用方法取决于你的测试需求和自动化任务。
selenium模块中的常用方法及其作用
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基础语法
笔记内容:(元素定位、元素操作、鼠标\键盘操作、浏览器操作、等待、多选、拖放、显示所有链接) 一、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元素定位的八种常用方式
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常用语句总结
Selenium常⽤语句总结0、驱动准备1、打开⾸页driver.get( )2、⼋⼤定位driver.find_element_by_id( )driver.find_element_by_name( )driver.find_element_by_class_name( )driver.find_element_by_link_text( )driver.find_element_by_css_selector( )driver.find_element_by_xpath( )driver.find_element_by_tag_name( )3、基本⽅法send_keys输⼊字符text获取⽂本get_attribute()获取属性值maximize_windows( )窗⼝最⼤化current_url获取当前窗⼝的URLis_selected( )判断元素是否被选择,被选中返回“True”,反之返回“False”is_enabled( )判断页⾯元素是否显⽰clear清空输⼊框值quit关闭浏览器并杀死驱动title获取页⾯titlerefresh( )刷新页⾯back( )页⾯向后退forward( )页⾯向前进4、特殊元素定位ActionChains( ).click( )模拟⿏标单击操作ActionChains( ).click_and_hold( )模拟⿏标单击并且按住不放ActionChains( ).double_click( )模拟⿏标双击操作ActionChains( ).context_click( )模拟⿏标右键操作ActionChains( ).drag_and_drop( )模拟拖动⿏标ActionChains( ).drag_and_drop_by_offset( )模拟将⽬标拖拽到⽬标位置ActionChains( ).key_down( )模拟按住某个键,实现快捷键操作ActionChains( ).key_up( )模拟松开某个键,⼀般和key_down操作⼀起使⽤ActionChains( ).move_to_element( )模拟将⿏标移到指定的某个页⾯元素ActionChains( ).move_to_element_with_offset( )移动⿏标⾄指定的坐标ActionChains( ).perform( )将之前的⼀系列ActionChains执⾏ActionChains( ).release( )释放按下的⿏标5、三种选择Select元素的值的⽅法Select( ).select_by_index( )索引值Select( ).select_by_value( )值Select( ).select_by_visible_text( )⽂本6、三种返回选项的信息Select( ).options所有选项Select( ).all_selected_options下拉框中已经选中的选项Select( ).first_selected_option第⼀个被选中的选项7、JavaScript & jQuery 操作页⾯元素driver.execute_script( )同步执⾏,执⾏时间短,WebDriver不等待driver.execute_async_script( )异步执⾏,执⾏时间较长,WebDriver等待8、常⽤⿏标事件ActionChains( ).context_click( ) ActionChains( ).double_click( ) ActionChains( ).drag_and_drop( ) ActionChains( ).move_to_element( )9、常⽤键盘操作send_keys(Keys.BACK_SPACE)删除键send_keys(Keys.SPACE)空格键send_keys(Keys.TAB)Tab键send_keys(Keys.ESCAPE)回退键send_keys(Keys.ENTER)回车键send_keys(Keys.CONTROL, "x")Ctrl + x 键send_keys(Keys.F1)F1键。
selenium webdriver 方法
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")方法获取该图片的链接地址。
[转载]Selenium2.0之WebDriver学习总结(2)
(三) 命令和操作这一部分将介绍一下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名。
selenium的webdriver用法
Selenium的webdriver用法1. 简介Selenium是一个用于自动化Web浏览器的工具,它支持多种浏览器和操作系统,并提供了丰富的API来控制浏览器的行为。
其中,webdriver是Selenium的一个子项目,它提供了一组用于控制浏览器的API,可以模拟用户在浏览器中的操作。
2. 安装webdriver要使用webdriver,首先需要安装Selenium库。
可以通过以下命令使用pip安装Selenium:pip install selenium安装完成后,可以导入webdriver模块开始使用。
3. 启动浏览器使用webdriver可以启动各种浏览器,包括Chrome、Firefox、Safari等。
下面以Chrome浏览器为例,介绍如何启动浏览器。
from selenium import webdriver# 启动Chrome浏览器driver = webdriver.Chrome()在上述代码中,我们通过导入webdriver模块创建了一个Chrome浏览器的实例。
如果系统中已经安装了Chrome浏览器,并将其添加到了系统的环境变量中,那么webdriver会自动找到并启动Chrome浏览器。
如果没有安装Chrome浏览器,可以从官方网站下载并安装。
启动浏览器后,可以使用driver对象来控制浏览器的行为。
4. 打开网页使用webdriver打开网页非常简单,只需要调用get()方法并传入网页的URL即可。
driver.get("")上述代码将会打开一个新的浏览器窗口,并加载指定的网页。
5. 查找元素webdriver提供了一系列方法来查找网页中的元素,比如文本框、按钮、链接等。
常用的查找元素的方法有以下几种:•find_element_by_id(id):通过元素的id属性查找元素。
•find_element_by_name(name):通过元素的name属性查找元素。
webdriver常用方法
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的同时,也要学习其中的常用方法,用好它们才能更好地服务于产品开发和质量检测。
pythonseleniumwebdriver入门基本操作
pythonseleniumwebdriver⼊门基本操作from selenium import webdriverimport timedriver=webdriver.Chrome()driver.get('')#进⼊百度⾸页driver.maximize_window()#窗⼝最⼤化time.sleep(1)driver.set_window_size(480,600)#窗⼝⼤⼩变化time.sleep(1)driver.maximize_window()time.sleep(1)driver.set_window_size(500,700)time.sleep(1)driver.maximize_window()time.sleep(1)driver.set_window_size(600,800)time.sleep(1)driver.maximize_window()time.sleep(1)driver.set_window_size(700,1000)print'#窗⼝⼤⼩变化结束'time.sleep(2)driver.find_element_by_id('kw').send_keys('selenium')#输⼊关键字seleniumtime.sleep(1)driver.find_element_by_id('su').click()#进⼊selenium页⾯time.sleep(3)driver.find_element_by_xpath("//*[@id='1']/h3/a").click()print'进⼊selenium官⽹'time.sleep(3)driver.find_element_by_link_text('功能⾃动化测试⼯具——Selenium篇').click()#通过锚⽂本定位time.sleep(10)windows=driver.window_handlesdriver.switch_to_window(windows[1])#切换窗⼝#driver.refresh()driver.maximize_window()time.sleep(2)driver.close()windows=driver.window_handlesdriver.switch_to_window(windows[1])#切换窗⼝time.sleep(2)driver.close()windows=driver.window_handlesdriver.switch_to_window(windows[0])#切换窗⼝content=driver.find_element_by_xpath("//*[@id='1']/div[2]").text#打印出这⼀部分的内容print contentdriver.back()print'返回到百度⾸页'time.sleep(2)driver.forward()print'进⼊下⼀页'time.sleep(5)driver.find_element_by_xpath("//*[@id='u']/a[2]").click()driver.find_element_by_xpath("//*[@id='wrapper']/div[4]/a[1]").click()#处理有下拉框的元素time.sleep(1)driver.find_element_by_xpath("//*[@id='gxszButton']/a[1]").click()time.sleep(1)driver.switch_to_alert().accept()#处理警告弹窗time.sleep(2)print'处理好警告弹窗'js="var q=document.documentElement.scrollTop=10000"driver.execute_script(js)#处理右侧的滚动条time.sleep(3)print"右侧的滚动条拉倒最低处"driver.close()。
selenium的driver使用方法
一、概述Selenium是一个用于Web应用程序测试的工具,通过自动化浏览器操作来实现自动化测试。
其中的driver则是使用Selenium时的一个重要组件,它负责控制浏览器的行为。
本文将详细介绍Selenium中driver的使用方法,帮助读者更加全面地了解和掌握这一重要工具。
二、安装Selenium和相应的驱动器1. 安装Selenium要使用Selenium中的driver,首先需要安装Selenium。
Selenium支持多种编程语言,包括Java、Python、C#等,安装方法略有不同。
一般而言,可以通过对应语言的包管理工具进行安装,或者直接下载Selenium的源码进行安装。
2. 安装相应的驱动器除了安装Selenium本身,还需要安装相应浏览器的驱动器。
Selenium支持多种浏览器,如Chrome、Firefox、Edge等,每种浏览器都需要对应的驱动器来配合使用。
可以通过Selenium冠方全球信息站或各个浏览器冠方全球信息站下载对应的驱动器,并将其添加到系统的PATH变量中。
三、创建浏览器实例1. 导入Selenium模块在编写自动化测试脚本时,首先需要导入Selenium模块。
具体导入方式因编程语言而异,一般可以使用import语句将Selenium模块导入到脚本中。
2. 实例化浏览器对象接下来,需要实例化浏览器对象。
根据所用的浏览器类型,可以创建对应的浏览器对象,如Chrome、Firefox或Edge。
实例化浏览器对象的具体语法会因编程语言不同而有所差异。
3. 控制浏览器行为一旦实例化了浏览器对象,就可以通过driver对象控制浏览器的行为。
比如可以控制浏览器打开指定网页、进行搜索操作、点击信息等。
四、常用的driver方法1. get(url)用于打开指定的网页。
2. maximize_window()用于最大化浏览器窗口。
3. find_element_by_xxx()用于定位网页中的元素,xxx可以是id、class、name等,根据需要选择合适的方法进行定位。
Selenium命令列表
Seleni um 命令列表一、 Comman ds (命令)Action对当前状态进行操作失败时,停止测试Assert ion校验是否有产生正确的值Elemen t Locato rs指定HTML中的某元素Patter ns用于模式匹配1. Elemen t Locato rs (元素定位器)id=idid locato r 指定HTML中的唯一i d的元素name=namename locato r指定HTML中相同name的元素中的第一个元素identi fier=ididenti fierlocato r 首先查找HT ML是否存在该id的元素, 若不存在,查找第一个该name的元素dom=javasc riptE xpres siondom locato r用Jav aScri pt表达式来定位HT ML中的元素,注意必须要以"docume nt"开头例如:dom=docume nt.forms['myForm'].myDrop downdom=docume nt.images[56]xpath=xpathE xpres sionxpathlocato r用 XPath表达式来定位HTML中的元素,必须注意要以"//"开头例如:xpath=//img[@alt='The imagealt text']xpath=//table[@id='table1']//tr[4]/td[2]link=textPa tternlink locato r 用link来选择HTM L中的连接或锚元素例如:link=The link text在没有loc ator前序的情况下 Withou t a locato r prefix, Seleni um uses:如果以"docume nt."开头,则默认是使用 dom locato r,如果是以"//"开头,则默认使用x pathlocato r,其余情况均认作iden tifie r locato r2. String Matchi ng Patter ns (字符串匹配模式)glob:patthe rnglob模式,用通配符"*"代表任意长度字符,"?"代表一个字符regexp:regexp正则表达式模式,用JavaS cript正则表达式的形式匹配字符串exact:string精确匹配模式,精确匹配整个字符串,不能用通配符在没有指定字符串匹配前序的时候,seleni um 默认使用go lb 匹配模式3. Select Option Specif iers(Select选项指定器)label=labelP atter n通过匹配选项中的文本指定选项例如:label=regexp:^[Oo]thervalue=valueP atter n通过匹配选项中的值指定选项例如:value=otherid=id通过匹配选项的id指定选项例如: id=option1index=index通过匹配选项的序号指定选项,序号从0开始例如:index=2在没有选项选择前序的情况下,默认是匹配选项的文本二、 Action s描述了用户所会作出的操作。
PythonSeleniumWebdriver常用方法总结
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。
pyhon的selenium用法webdriver.find_elements的用法
pyhon的selenium用法webdriver.find_elements的用法在Selenium中,`webdriver.find_elements` 方法用于查找符合指定条件的多个元素,并返回一个包含这些元素的列表。
下面是使用`webdriver.find_elements` 方法的基本用法,假设你已经创建了一个WebDriver 对象,通常是`webdriver.Chrome()` 或`webdriver.Firefox()`:```pythonfrom selenium import webdriver# 创建WebDriver 对象driver = webdriver.Chrome()# 打开网页driver.get("")# 使用find_elements 查找元素,以下是一些常见的用法示例:# 1. 通过标签名查找所有元素elements_by_tag = driver.find_elements_by_tag_name("a")# 2. 通过类名查找所有元素elements_by_class = driver.find_elements_by_class_name("example-class")# 3. 通过CSS选择器查找所有元素elements_by_css = driver.find_elements_by_css_selector(".example-selector")# 4. 通过XPath查找所有元素elements_by_xpath = driver.find_elements_by_xpath("//div[@class='example-div']")# 5. 通过name属性查找所有元素elements_by_name = driver.find_elements_by_name("example-name")# 遍历元素列表,并对每个元素进行操作for element in elements_by_tag:print(element.text)# 关闭浏览器driver.quit()```这里演示了通过标签名、类名、CSS选择器、XPath、和name 属性等方式来查找元素。
十五SeleniumWebdriver3.X源码分析之webdriver常用方法说明
⼗五SeleniumWebdriver3.X源码分析之webdriver常⽤⽅法说明常⽤⽅法分类⼀、全局操作类start_session 使⽤指定的desired capabilities创建⼀个会话(session)start_client 新建⼀个webdriver会话session前调⽤,可以⾃定义初始化的动作stop_client 停⽌webdriver会话session后调⽤,可以⾃定义⼀些清理动作create_web_element 创建⼀个html元素get 在当前浏览器会话页打开指定的的url⽹页close 关闭当前浏览器窗⼝quit 关闭webdirver会话,并把所有与该会话关联的浏览器窗⼝⼀起关闭forward/back 浏览器历史浏览上⼀次/下⼀次操作refresh 刷新浏览器set_script_timeout 设置脚本执⾏超时时间set_page_load_timeout 设置页⾯加载超时时间get_screenshot_as_file 截图并保存为⽂件get_screenshot_as_png 截图并保存为png格式⽂件get_screenshot_as_base64 截图成base64串get_cookies/delete_all_cookies 获取/删除所有cookieget_cookie/delete_cookie 获取/删除指定的cookie⼆、元素定位类find_element_by_id / find_elements_by_id 通过id查找⼀个或多个元素find_element_by_xpath / find_elements_by_xpath 通过xpath查找⼀个或多个元素find_element_by_link_text / find_elements_by_link_text 通过链接⽂本查找⼀个或多个元素(全匹配模式)find_element_by_partial_link_text / find_elements_by_partial_link_text 通过部分链接⽂本查找⼀个或多个元素(部分匹配模式)find_element_by_name / find_elements_by_name 通过元素名查找⼀个或多个元素find_element_by_tag_name / find_elements_by_tag_name 通过html标记名查找⼀个或多个元素find_element_by_class_name / find_elements_by_class_name 通过class name查找⼀个或多个元素find_element_by_css_selector / find_elements_by_css_selector 通过css选择器查找⼀个或多个元素三、js执⾏类execute_script 同步模式执⾏js(等待js的执⾏完成,才进⼊下⼀步)execute_async_script 异步模式执⾏js(不需要等待js的执⾏结果,直接进⾏下⼀步)四、窗⼝、元素操作类current_window_handle 获取当前窗⼝的handlehandlewindow_handles 获取当前webdriver session所有窗⼝的maximize_window 最⼤化窗⼝set_window_size 设置窗⼝⼤⼩get_window_size 获取窗⼝⼤⼩set_window_position 设置窗⼝位置get_window_position 获取窗⼝位置switch_to_window 切换⾄指定窗⼝switch_to_default_content 切换⾄默认的frameswitch_to_frame 切换⾄指定的frameswitch_to_alert 切换⾄标准的alert窗⼝switch_to_active_element 切换⾄当前激活的元素五、基本信息读取类desired_capabilities 获取当前会话的desired_capabilities信息current_url 获取当前页⾯的urlpage_source 获取当前页⾯的源码title 获取当前页⾯的标题。
python+selenium常用语句
一、元素的定位1.webdriver提供的8种页面元素定位方法:id/name/class name/tag name/link text/partial link text/xpath/css selector其中python对应的8种方法:find_element_by_id() 如: find_element_by_id("kw")find_element_by_name() 如: find_element_by_name("wd")find_element_by_class_name() 如: find_element_by_class_name("s_ipt ")find_element_by_tag_name() 如: find_element_by_tag_name("input") find_element_by_link_text() 如:find_element_by_link_text(u"新闻") find_element_by_partial_link_text() 如:find_element_by_partial_link_text(u"一个很长的")find_element_by_xpath() 如: find_element_by_xpath(" .//*[@id=‘kw‘]") find_element_by_css_selector() 如: find_element_by_css_selector("#kw") 注意:a.python对中文支持不好,在对于有中文的地方加小写u,作用是把中文字符串转换成unicode编码,如上面link_text(u"新闻")b.xpath中如果不想指定标签名,也可用(*)代替,2.xpath定位:2.1 绝对路径定位:find_element_by_xpath("/html/body/div/div[2]/div/form/span/input")2.2 利用元素属性定位:find_element_by_xpath("//*/input[@id=‘kw‘]") //表示当前目录2.3 层级与属性结合:find_element_by_xpath("//span[@class=‘bgs_pt‘]/input") /input表示父元素下的子元素可以用这种方法,一层层网上,直到最外层<html>标签2.4 使用逻辑运算符:find_element_by_xpath("//input[@id=‘kw‘ and@class=‘su‘]/span/input")3.css定位速度快于xpathcss常见语法:例如:通过.class定位的: find_element_by_css_selector(".intr")通过#id定位的: find_element_by_css_selector("#firstname")通过标签名定位的: find_element_by_css_selector("input")通过父子关系定位的:find_element_by_css_selector("div>input")通过属性定位:find_element_by_css_selector("input[type=‘submit‘]")组合定位: find_element_by_css_selector(span.bg s_ipt>input.s_ipt)//父标签span对应class属性为bg s_ipt的节点下的子标签input且这个子标签class属性为s_ipt二、浏览器控制1.控制浏览器大小:set_window_size() 例如:driver.set_window_size(400,500)maximize_window() 例如:driver.maximize_window() #无参数2.浏览器后退、前进:back()-后退、farward()-前进三、鼠标事件ActionChains类提供的常用方法:1.1 perform():执行ActionChains中存储的所有行为,对整个事件进行提交1.2 context_click(): 右击如:from mon.action_chains import ActionChains...ActionChains(dr).context_click(docfile).perform()1.3 double_click(): 双击from mon.action_chains import ActionChains...doubleClick=dr.find_element_by_id("xxx")ActionChains(dr). double_Click(doubleClick).perform()1.4 drag_and_drop(source,target): 拖动如:from mon.action_chains import ActionChains...dsource=dr.find_element_by_id("xxx") #拖动的源元素dtarget=dr.find_element_by_id("xxx") #释放的目标目标元素ActionChains(dr).drag_and_drop(dsource,dtarget).perform()1.5 move_to_element(): 鼠标悬停如:from mon.action_chains import ActionChains...above=dr.find_element_by_id("xxx")ActionChains(dr).move_to_element(above).perform()四、键盘事件1.首先要导入键盘事件的包.1. from mon.keys import Keys2. ...3. dr.get("")4. #输入内容5. dr.find_element_by_id("kw").send_keys("seleniumm")6. #删除输入内容的最后一个字母,7. dr.find_element_by_id("kw").send_keys(Keys.BACK_SPACE)8. #输入:空格+教程9. dr.find_element_by_id("kw").send_keys(Keys.SPACE)10. dr.find_element_by_id("kw").send_keys(u"教程")11. #ctrl+a全选输入框内容12. dr.find_element_by_id("kw").send_keys(Keys.CONTROL,‘a‘)13.14. #ctrl+x剪贴输入框内容15. dr.find_element_by_id("kw").send_keys(Keys.CONTROL,‘x‘)16.17. #ctrl+v剪贴输入框内容18. dr.find_element_by_id("kw").send_keys(Keys.CONTROL,‘v‘)19.20. #回车键操作21. dr.find_element_by_id("su").send_keys(Keys.ENTER)22. dr.close()常用的键盘操作整理: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.CONTROL,‘c‘) #Ctrl+csend_keys(Keys.CONTROL,‘x‘) #Ctrl+xsend_keys(Keys.CONTROL,‘v‘) #Ctrl+xsend_keys(Keys.F1) #F1,类似的有F1-F12五、获取验证1.通常用到的验证信息有:title、URL、textdr.titledr.current_urldr.find_element_by_id("xx").text六、设置等待1.显示等待:等待某个条件成立时,继续执行,否则达到最大等待时间后抛出异常:TimeoutException,显示等待是针对当前要定位元素使用WebDriverWait(driver, timeout,poll_frequency,ignored_exceptions=None).until(method,message)示例:WebDriverWait(dr,5,0.5,None).until(expected_conditions.pr esence_of_element_located((By.ID,"kw1")),message=‘test‘)解释:A.WebDriverWait():在设置时间内,默认间隔一段时间检测一次当前页面元素是否存在,若超过当前指定时间检测不到则抛出异常;B.driver:webdriver的浏览器驱动,ie、firefox、chromeaC.timeout:最长超时时间,以秒为单位D.poll_frequency:休眠间隔时间-步长,默认0.5秒E.ignored_exceptions:超时后异常信息,默认抛出NoSuchElementException异常F.until(method,message): 调用该方法提供的驱动作为一个参数,直到返回值为TrueG.until_not(method,message):调用该方法提供的驱动作为一个参数,直到返回值为FalseH.expected_conditions类提供的预期条件实现有:title_is:判断标题是否是xxtitle_contains:判断标题是否包含xxpresence_of_element_located:元素是否存在visibility_of_element_located:元素是否存在visibility_of:是否可见presence_of_all_elements_located:判断一组元素是否存在text_to_be_present_in_element:判断元素是否有xx文本信息text_to_be_present_in_element_value:判断元素值是否有xx文本信息frame_to_be_available_and_switch_to_it:表单是否可见,并切换到该表单invisibility_of_element_located:判断元素是否隐藏element_to_be_clickable:判断元素是否点击,它处于可见和启动状态staleness_of:等到一个元素不再依附于DOMelement_to_be_selected:被选中的元素element_located_to_be_selected:一个期望的元素位于被选中element_selection_state_to_be:一个期望检查如果给定元素被选中element_located_selection_state_to_be:期望找到一个元素并检查是否是选择状态alert_is_present:预期一个警告信息2.隐式等待:通过一定的时长等待页面所有元素加载完成,哪个元素超出设置时长没被加载就抛出异常NoSuchElementException,隐式等待是针对所有元素的implicitly_wait(5)#默认单位为秒示例:dr.implicitly_wait(5)七、sleep休眠python中强制的程序等待from time import sleepsleep(4) #默认单位秒,设置小于1秒的时间可以用小数点如sleep(0.6)八、定位一组元素,类似与1中定位单个元素方法find_elements_by_id() 如: find_elements_by_id("kw")find_elements_by_name() 如: find_elements_by_name("wd")find_elements_by_class_name() 如: find_elements_by_class_name("s_ipt") find_elements_by_tag_name() 如: find_elements_by_tag_name("input") find_elements_by_link_text() 如:find_elements_by_link_text(u"新闻") find_elements_by_partial_link_text() 如:find_elements_by_partial_link_text(u"一个很长的")find_elements_by_xpath() 如: find_elements_by_xpath(" .//*[@id=‘kw‘]" )find_elements_by_css_selector() 如: find_elements_by_css_selector("#kw") 使用场景:a.批量操作对象,如选中页面上所有复选框b.先获取一组对象,再在这组对象里定位需要的的一些对象,如定位所有复选框,然后选择最后一个例如:代码如下checkbox.htm页面:.1. <style type="text/css">2. body{font-size:12px;font-family:Tahoma;}3. .checkbox{vertical-align:middle;margin-top:0;}4. </style>5.6. <body>7. <input class="checkbox"type="checkbox"/>元旦8. <input type="checkbox"name="test"/>圣诞节9. <input type="checkbox"name="test"/>股市10. <input type="checkbox"name="test"/>阿凡达11. <input type="checkbox"name="test"/>十月围城12. <input type="checkbox"name="test"/>水价上调13. <input type="button"value="检测"id="btn"/>14. </body>python代码:.1. from selenium import webdriver2..1. dr=webdriver.Firefox()2. dr.get("D:\\workspace\\pySelenium\\resources\\checkbox.htm")3. #使用tagname方式选择页面上所有tagname为input的元素4. select_tagname=dr.find_elements_by_tag_name("input")5. #使用xpath方式选择页面上所有tagname为input的元素6. select_xpath=dr.find_elements_by_xpath("//input[@type=‘checkbox‘]")7. #使用css_select方式选择页面上所有tagname为input的元素8. select_css=dr.find_elements_by_css_selector(‘input[type=checkbox]‘)9. for i in select_tagname:10. #循环对每个input元素进行点击选中操作11. if i.get_attribute("type")==‘checkbox‘:12. i.click()13.14. for j in select_xpath:15. #循环对每个input元素进行点击取消操作16. j.click()17. for k in select_css:18. #循环对每个input元素进行点击选中操作19. k.click()20. #打印出checkbox的个数21. print‘----页面上checkbox的个数为:‘,len(select_css)22. #使用pop()获取1组元素的第几个元素23. select_css.pop(0).click()#第一个24. select_css.pop(1).click()#第二个25. select_css.pop().click()#最后一个26. select_css.pop(-1).click()#最后一个27. select_css.pop(-2).click()#倒数第二个28. dr.close()备注:pop():选择一组元素中的某一个,要注意的是:pop()和pop(-1)都表示最后一个元素九、多表单切换(对于有frame嵌套表单的操作)frame页面:.1. <html>2. <body>3. <frameset>4. <h3>frame</h3>5. <iframe id=‘frameid‘name=‘frameName‘width="800"height="500"src=""/>6. </frameset>7. </body>8. </html>python代码:.1. dr.get("D:\\workspace\\pySelenium\\resources\\frame.htm")2.3. dr.switch_to_frame("frameid")#通过frame的id进入iframe4. #dr.switch_to_frame("frameName") #通过frame的name进入iframe5. #下面可以对frame进行操作了6. dr.find_element_by_id("kw").send_keys("selenium")7. dr.find_element_by_id("su").click()8.9. dr.switch_to_default_content()#退出当前frame返回上一层备注:1.switch_to_frame()默认直接取表单的id或者name属性来切换2.完成当前frame表单操作后,可以通过switch_to_default_content()方法返回上一层表单,即离的最近的switch_to_frame()方法3.对于frame中没有id和name属性的通过下面方式进入frame(定位到frame以页面对象传入)python代码:.1. dr.get("D:\\workspace\\pySelenium\\resources\\frame.htm")2. #定位到frame页面元素3. framepath=dr.find_element_by_class_name("frameClassname")4. dr.switch_to_frame(framepath)#通过frame页面对象进入iframe5.6. #下面可以对frame进行操作了7. dr.find_element_by_id("kw").send_keys("selenium")8. dr.find_element_by_id("su").click()9.10. dr.switch_to_default_content()#退出当前frame返回上一层十、多窗口切换selenium-webdriver中使用switch_to_window()方法来切换任意窗口,常用方法有driver.current_window_handle#获取当前窗口句柄driver.window_handles #返回所有窗口句柄到当前会话driver.switch_to_window() #进入窗口,用于切换不同窗口python代码:.1. dr.get("")2. current_handle=dr.current_window_handle #获取百度首页窗口句柄3. index_login=dr.find_element_by_xpath("//div[@id=‘u1‘]/a[@class=‘lb‘]")#获取登录按钮对象4. index_login.click()#点击登录5. dr.implicitly_wait(5)6. dr.find_element_by_class_name("pass-reglink").click()#点击立即注册按钮7. all_handles=dr.window_handles #获取所有打开窗口句柄8. for handle in all_handles:9. if handle==current_handle:10. dr.switch_to_window(handle)11. ‘‘‘12. ...对首页窗口进行操作13. ‘‘‘14. print‘----首页页面title:‘,dr.title15. for handle in all_handles:16. if handle!=current_handle:17. dr.switch_to_window(handle)18. ‘‘‘19. ...对注册窗口进行操作20. ‘‘‘21. print‘----注册页面title:‘,dr.title十一、警告框处理webdriver中处理js生成的alert、confirm、prompt处理方法是:使用switch_to_alert()定位到alert/confirm/prompt,然后使用text、accept、dismiss、send_keys来根据需要操作。
【Selenium-WebDriver自学】WebDriver交互代码(十一)
【Selenium-WebDriver⾃学】WebDriver交互代码(⼗⼀)==========================================================================================================写在前⾯:最近项⽬⼀直很忙,没有时间来整理⾃动化测试⽅⾯的知识。
由于项⽬忙,⾃动化测试⼀直未使⽤到项⽬中来,希望接下来在项⽬之余,能够抽出时间来将⾃动化测试投⼊到实际的项⽬中来。
==========================================================================================================参考链接:1、Selenium定位器下表给出了定位selenium 元素的webdriver的Java语法。
使⽤Jquery查找元素2、常⽤命令下表列出了webdriver的最常⽤的命令以及它的语法,这将有助于我们开发webdriver脚本。
3、⽂本框的相互作⽤String result = driver.findElement(By.id("cpar1")).getAttribute("value");driver.findElement(By.id("cpar1")).sendKeys("10");driver.navigate().to("");driver.findElement(By.id("kw")).clear();driver.findElement(By.id("kw")).sendKeys("魔兽");driver.findElement(By.id("su")).click();4、单选按钮互动// Click on Radio Buttondriver.findElement(By.id("cpayoff1")).click();WebElement radioOption = driver.findElement(By.xpath("//input[@value='orange']"));if(!radioOption.isSelected()){radioOption.click();}List<WebElement> fruits = driver.findElements(("fruit"));for(WebElement fruit : fruits){if(fruit.getAttribute("value").equals("watermelon")){if(!fruit.isSelected()){fruit.click();Assert.assertTrue(fruit.isSelected());break;}}}5、复选框交互// Click on check Boxdriver.findElement(By.id("caddoptional")).click();6、下拉交互⽤“selectByVisibleText'或'selectByIndex'或'selectByValue'的⽅法选择⼀个选项。
selenium常用方法整理
selenium常⽤⽅法整理⼀、常⽤库导⼊1.from selenium import webdriver 导⼊webdriver模块2.from selenium.webdriver import ActionChains 导⼊动作链类,动作链可以储存⿏标的动作,并⼀起执⾏3.from mon.key import Key 键盘操作使⽤的是Keys类,⼀般配合send_keys使⽤4.from selenium.webdriver.support.select import Select 下拉框的操作都交由Select类进⾏处理5.from mon.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as EC 显⽰等待使⽤的类⼆、基本操作1.浏览器相关操作创建浏览器对象 driver = webdriver.xxx()窗⼝最⼤化 maximize_window()获取浏览器尺⼨ get_window_size()设置浏览器尺⼨ set_window_size()获取浏览器位置 get_window_position()设置浏览器位置 set_window_position(x,y)关闭当前标签/窗⼝ close()关闭所有标签/窗⼝ quit()1# 导⼊webdriver2from selenium import webdriver34# 创建⼀个浏览器对象5 driver = webdriver.Firefox()67# 设置全屏8 driver.maximize_window()910# 获取当前浏览器尺⼨11 size = driver.get_window_size()12print(size)1314# 设置浏览器尺⼨15 driver.set_window_size(400, 400)16 size = driver.get_window_size()17print(size)1819# 获取浏览器位置20 position = driver.get_window_position()21print(position)2223# 设置浏览器位置24 driver.set_window_position(100,200)252627# 关闭浏览器28 driver.quit()29 driver.close()View Code2.页⾯相关操作请求某个url driver.get(url)刷新页⾯操作 refresh()回退到之前的页⾯ back()前进到之后的页⾯ forward()获取当前访问页⾯url current_url获取当前浏览器标题 title保存图⽚ get_screenshot_as_png()/get_screenshot_as_file(file)⽹页源码 page_source# 导包from selenium import webdriverimport time# 创建浏览器对象driver = webdriver.Firefox()# 访问百度url1 = ''driver.get(url1)print('访问:',url1)# 访问知乎url2 = 'https:///'time.sleep(2)driver.get(url2)print('访问:',url2)# 后退操作time.sleep(2)driver.back()print('后退到',url1)# 前进time.sleep(2)driver.forward()print('前进到',url2)# 显⽰当前的urlprint(driver.current_url)# 显⽰当前的页⾯标题print(driver.title)# 保存快照操作# ⾃动写⽂件driver.get_screenshot_as_file('baidu.jpg')# ⾃⼰写⽂件data = driver.get_screenshot_as_png()with open('baidu2.jpg','wb') as f:f.write(data)data = driver.page_source# 以⼆进制类型写⼊⽂件with open('baidu.html','wb') as f:f.write(data.encode())View Code3.页⾯元素的定位(⼋种定位⽅式)id定位 driver.find_element_by_id(value)name属性值定位 driver.find_element_by_name(value)类名定位 driver.find_element_by_class_name(value)标签名定位 driver.find_element_by_tag_name(value)链接⽂本定位 driver.find_element_by_link_text(value)部分链接⽂本 driver.find_element_by_partial_link_text(value)xpath路径表达式 driver.find_element_by_xpath(value)css选择器 driver.find_element_by_css_selector(value)4.元素的操作对元素的相关操作,⼀般要先获取到元素,再调⽤相关⽅法 element = driver.find_element_by_xxx(value)点击操作 element.click()清空输⼊框 element.clear()输⼊框输⼊数据 element.send_keys(data)获取⽂本内容(既开闭标签之间的内容) element.text获取属性值(获取element元素的value属性的值) element.get_attribute(value)from selenium import webdriverimport time# 创建⼀个浏览器driver = webdriver.Firefox()# 访问百度url = ''driver.get(url)# 定位到输⼊框el = driver.find_element_by_id('kw')# 输⼊seleniumel.send_keys('selenium')# 清空操作el.clear()# 输⼊pythonel.send_keys('python')# 定位到搜索按钮el_sub = driver.find_element_by_id('su')# 调⽤提交el_sub.click()time.sleep(5)driver.close()View Code5.⿏标和键盘操作⿏标操作需要导⼊类,见第⼀部分,然后创建对象ActionChains(driver),键盘操作导⼊类见第⼀部分⿏标右击el = driver.find_element_by_xxx(value)context_click(el)⿏标双击el = driver.find_element_by_xxx(value)ActionChains(driver).double_click(el).perform()⿏标悬停el = driver.find_element_by_xxx(value)ActionChains(driver).move_to_element(el).perform()常⽤键盘操作send_keys(Keys.BACK_SPACE) 删除键(BackSpace)send_keys(Keys.SPACE) 空格键(Space)send_keys(Keys.TAB) 制表键(Tab)send_keys(Keys.ESCAPE) 回退键(Esc)send_keys(Keys.ENTER) 回车键(Enter)send_keys(Keys.CONTROL,‘a’) 全选(Ctrl+A)send_keys(Keys.CONTROL,‘c’) 复制(Ctrl+C)send_keys(Keys.CONTROL,‘x’) 剪切(Ctrl+X)send_keys(Keys.CONTROL,‘v’) 粘贴(Ctrl+V)from selenium import webdriver# 导⼊动作链类from selenium.webdriver import ActionChains# 开浏览器driver = webdriver.Firefox()# 访问百度url = ''driver.get(url)# 定位到logo元素el_logo = driver.find_element_by_css_selector('#lg > map:nth-child(2) > area:nth-child(1)')# ⿏标右击操作,操作元素前,需要将操作的元素定位出来并且穿⼊相应的动作中,如果要执⾏操作,需要调⽤perform() ActionChains(driver).context_click(el_logo).perform()# 双击定位到的元素,进⾏切换ActionChains(driver).double_click(el_logo).perform()# 开⼀个浏览器driver = webdriver.Firefox()driver.maximize_window()# 访问京东url = ''driver.get(url)# 获取分类组元素el_list = driver.find_elements_by_class_name('cate_menu_item')#⿏标悬停for el in el_list:ActionChains(driver).move_to_element(el).perform()time.sleep(1)driver.quit()View Code6.弹出框操作进⼊到弹出框中 driver.switch_to.alert()接收警告 accept()关闭警告 dismiss()发送⽂本到警告框 send_keys(data)7.下拉框操作将定位到的下拉框元素传⼊Select类中 selobj = Select(element)通过索引选择,index 索引从 0 开始 select_by_index()通过值选择(option标签的⼀个属性值) select_by_value()通过⽂本选择(下拉框的值) select_by_visible_text()查看所有已选 all_selected_options查看第⼀个已选 first_selected_option查看是否是多选 is_multiple查看选项元素列表 options取消选择 deselect_by_index() /deselect_by_value()/ deselect_by_visible_text()8.滚动条操作js = "window.scrollTo(x,y) " x为⽔平拖动距离,y为垂直拖动举例driver.execute_script(js)js= "var q=document.documentElement.scrollTop=n" n为从顶部往下移动滚动举例driver.execute_script(js)9.cookies操作获取所有cookies get_cookies()获取key对应的值 get_cookie(key)设置cookies add_cookie(cookie_dict)删除指定名称的cookie delete_cookie(name)删除所有cookie delete_all_cookies()10.多标签/多窗⼝、多表单/多框架切换多表单/多框架切换直接使⽤id值切换进表单 driver.switch_to.frame(value)定位到表单元素,再切换进⼊el = driver.find_element_by_xxx(value)driver.switch_to.frame(el)跳回最外层的页⾯ driver.switch_to.default_content()跳回上层的页⾯ driver.switch_to.parent_frame()多标签/多窗⼝之间的切换获取所有窗⼝的句柄 handles = driver.window_handlers通过窗⼝的句柄进⼊的窗⼝ driver.switch_to.window(handles[n])。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
鲁德培训/软件测试学习
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秒为单位。