本教程中使用的库都是比较老的,但是好用 mkdir webdrivertutus cd webdrivertutus npm init npm install selenium-webdriver@3.6.0
(一) 前言 开发人员使用JavaScript 警告或者模态对话框来提示校验错误信息、报警信息、执行操作后的返回信息,甚至用来接收输入值等。...API补充说明(基于笔记7) 方法 简单说明 switch_to_active_element() 返回当前焦点的对象 switch_to_alert() 把焦点切换至当前页面弹出的警告 switch_to_default_content...() 切换焦点至默认框架内 switch_to_frame() 通过索引、名称和网页元素,将焦点切换至指定的框架 switch_to_window() 切换焦点到指定的窗口 (五) 示例(检查博客园首页点击退出是否弹出提示...sign_out_btn = span_userinfo.find_element_by_link_text('退出') 20 sign_out_btn.click() 21 #将焦点切换到当前页面弹出的警告...25 self.assertTrue(alert_text == '确认退出吗?')
此时,我们只有先将代码驱动切换到frame内部才可定位成功。...在新打开的窗口中,无法执行任何操作,因为焦点仍然在主页Web驱动程序上。 这时候,我们需要把焦点定位到新打开的页面上。...== '__main__': test=Testwindow() test.link() (左右滑动查看完整代码) 警告弹 -alert/confirm/promp 应用场景: 有些页面进入后自带弹窗提醒功能需要确认...,这时候就需要将焦点定位到alert弹窗上。...使用格式: alert=driver.switchtoalert() alert.accept() 实现功能 本地新建html文件,模仿alert/confirm/prompt弹窗,定位弹窗并确认。
github 地址:https://github.com/SeleniumHQ/selenium-ide Selenium IDE 负责录制、回放脚本,模拟用户对页面的真实操作 使用的大致流程: 1....']").click() #方式3:使用sikulix的jar包 #方式4:其它,比如AutoIt 2.5 窗口切换 在WebDriver中,焦点切换主要分为如下3类 警告窗体的焦点切换 内嵌页面的焦点切换...渐开窗口或者标签的焦点切换 焦点切换使用driver.switch_to的方式实现。...2.5.1 确认对话框 当对话框出现时,无法使用find_element_by的方式捕获元素,这时可以使用WebDriver的内置方法。...driver.find_element_by_xpath('//a[@node="0"]').click() driver.find_element_by_link_text('确定').click() # 切换到原始页面
Close和Quite关闭和退出浏览器窗口 切换内嵌框架Frame 切换到弹出框 创建一个WebDriver脚本,它将: 1、跳转到MercuryTours的主页(Demo页面); 2、验证其主页的标题...关闭和退出浏览器窗口 切换内嵌框架Frame 要访问框架中的GUI元素,我们应该首先引导WebDriver将焦点放在框架或弹出窗口上,然后才能访问其中的元素。...为了做到这一点,我们必须首先命令WebDriver使用switchTo().frame() 方法切换到classFrame 框架。我们将使用框架的name属性作为frame()部分的参数。...切换到弹出框 WebDriver允许显示诸如警告之类的弹出窗口。要访问警报中的元素(比如它包含的消息),必须使用switchTo().alert() 方法。...switchTo().frame() 和switchTo().alert() 方法分别用于将WebDriver的焦点切换到框架或警报弹窗上。
:指的是从网页的HTML代码结构的最外层一层层的写到需要被定位的页面元素为止。...使用相对路径定位:不是从根目录写起,而是从网页文本的任意目录开始写。相对路径起始于//,//所表示的含义是“任意标签下”。demo://input[@id='kw'] 注解: 1....派生选择器-----AA>XX或AA XX选择AA标签下的XX元素 • 你可以通过获取xpath的方式来从页面获取css选择器在css里标识层级关系使用的是>或者空格(xpath里使用的是/) div#...获取所有打开页面的句柄,是一个列表 • switch_to.window(“XX”)切换到指定页面,XX代表页面句柄 • switch_to.frame(XX)切换到内敛框架页面,XX代表内联框架标签的定位对象...• swith_to.parent_frame()切回到内敛框架的上一级,即从内敛框架切出。
本篇文章由来,这两天整理了下自己经常使用而且很熟练的项目,今天突然想起漏了一个,补上了,但想到还没对应的博客,那就写一个简单的 我经常使用且相对熟练的部分技术如下(不知道算不算各位大神眼中的辣鸡): ?...Frame的页面,以百度盘登录为例 ? ...String handle = driver.getWindowHandle(); // 获取所有页面的句柄,并循环判断不是当前的句柄 然后切换到子窗体 for (String handles...) 下有很多方法,比如后退,刷新等 Thread.sleep(2000); } } 注意:1.我这里只开了两个窗口,如果是多个,而且需要在窗口间切换操作的,注意在一个窗口中完成操作后,确认是否切回到需要操作的窗口... 2.页面内部有frame的,除了切换到具体页面外,还要切换到对应的frame中才行 3.关闭窗口时,也要确认操作的对象
这种情况下,如果直接去定位嵌套在Frame页面中的元素就会抛出NoSuchElementException异常。所以在操作嵌套在Frame框架上页面元素前,需要将页面焦点切换到Frame中。...嵌套多个Frame的页面,这种情况我们就需要一层层的跳转,从第一层跳转到要定位元素所在的那层框架。处理完业务如果需要跳转到其他层框架,首先需要跳转到最外层的页面,然后再逐一跳转Frame框架。...,获取Alert,并且接受Alert; 二、定位页面最中间的Frame: 1.从最左侧的Frame中跳转到最外层的页面; 2.定位页面中间的Frame; 3.获取页面中间Frame中的内容; 4.通过条件判断获取的内容是否复核预期结果...在这里特此总结一下经常用到的方法: switch_to_alert() 切换到alert弹窗 ; switch_to_window(window_name) 切换到某个浏览器window_name窗口...() 返回文档主页,从其他Frame/Iframe中返回到最外一层; switch_to.parent_frame() 切换到父frame,可以切换到上一层的frame,对于层层嵌套的frame很有用
比如跳转、输入、点击、下拉等,来拿到网页渲染之后的结果,可支持多种浏览器;由于selenium解析执行了CSS、JavaScript所以相对requests它的性能是低下的; 二、selenium基本使用...filename=jqueryui-api-droppable') browser.switch_to.frame('iframeResult')#切换到id='iframewrapper'的iframe...element=None) ——按下某个键盘上的键 key_up(value, element=None) ——松开某个键 move_by_offset(xoffset, yoffset) ——鼠标从当前位置移动到某个坐标...多少距离的位置 perform() ——执行链中的所有动作 release(on_element=None) ——在某个元素位置松开鼠标左键 send_keys(*keys_to_send) ——发送某个键到当前焦点的元素...中切回主文档(switch_to.default_content()) 切到frame中之后,我们便不能继续操作主文档的元素,这时如果想操作主文档内容,则需切回主文档。
从iframe当中回到默认的页面当中。...driver.switch_to.default_content() 想在这个iframe当中再切换到下一级,一层一层切进去就可以了,不能够跳层,如果你在这个html页面中还有iframe,那就切换两次...#从iframe当中回到默认的页面当中。 # 默认的页面就是访问一个网址,默认加载的,在f12中,看到的第一个html是它的主页面。...按ctrl+f,确认你的定位表达式在运行结果的页面中是否也可靠,直接在运行结果页面调试,这是初期最主要的调试手段。 ? 4.句柄可以理解成id,一个句柄就是一个id。 ? 图中就是句柄的id。...所以,我们即使确认alert弹框出现了,我们自己想要对它进行下一步处理的时候,还是要driver.switch_to.alert自己再切一次,不然就不好处理了。
perform() ——执行链中的所有动作 release(on_element=None) ——在某个元素位置松开鼠标左键 send_keys(*keys_to_send) ——发送某个键到当前焦点的元素...在页面A跳转到页面B之前,我们需要用一个变量保存这个新闻的标题 3. 切换到页面B后,我们获取这个新闻标题,然后和前面这个变量保存的值去对比,如果相等,那么就测试通过。...先实现页面A切换到页面B 2. 页面A和页面B两个新闻标题进行对比 先看看窗口切换的脚本代码: 5.1 代码实现: ? 5.2 参考代码: # coding=utf-8?...3. for 循环遍历,当发现其中一个句柄和当前句柄不相等,这里做了三件事,第一件,打印一个语句,告诉你马上要切换到第二个窗口,第二件,关闭当前窗口,这里指页面A,第三,切换到页面B窗口。...这里在切换到第二个页面时候,我关闭之前的页面A,只是我个人测试习惯,你可以不关闭,但是你的要思路清晰,哪些元素在页面A还是在页面B,如果操作了页面B后还要操作页面A的元素,你还要切换到页面A,为了麻烦,
这个操作,常见就是关闭当前句柄对应tab页面,然后切换到新的tab,这样driver就停留在一个tab,直接在这个tab进行元素查找和操作。...个人认为,第二种方法比较啰嗦,建议关闭当前句柄页面,切换到新页面。..."+ e.getMessage()); } //driver.close();//关闭当前焦点所在的窗口 } // driver.switchTo().window(currentWindow...同样,放在任何一个测试自动化断言中,使用最多的也就是判断是否相同或者相等,判断是否包含关系,判断是否什么开头或者什么结尾。...; na.publishArticle(title, bodyContent); // 点击链接跳转到该文章 na.clickArticleLink(); // driver切换到新窗口页面
,它使用的内核是 引擎,Android 4.4版本之后,直接使用 Chrome 作为内置网页浏览器 webkit 简单理解:就是App 中内嵌了一个浏览器 类比:Web 浏览器里面的 iframe 做...findViewById(R.id.jcywebview); # 添加这一行 myWebView.setWebContentsDebuggingEnabled(true); }; 注意:从应用市场下载的...原生有交互,依赖app 方法:通过chrome 浏览器的远程调试功能(前提是本电脑可以爬梯子上网) app 已打开 打开chrome 浏览器,地址输入 (如下图) chrome://inspect 确认...可以随意定位 webview 页面的元素了 ?...确认手机 webview版本 方式一:电脑chrome浏览器访问 chrome://inspect 翻上去,前面已经讲啦【注意标红文字】 方式二:手机设置 在手机设置页面,搜索webview就可以啦 ?
(手机上要先装个百度阅读APP,本篇以百度阅读APP为案例讲解) 一、识别webview 1.用定位工具查看页面,发现页面上有些区域无法定位到,如下图左边红色区域,只能定位到这个大框框,红色框里面的元素是无法识别的...2.这时候可以查看元素属性,如右图它的class属性,上面写着WebView,那毫无疑问这种页面就是webview了。 ?...四、切回native 1.webview上操作完后,想回到native上操作,这时候需要先切回来,切回native有两个方法: 方法一:driver.switch_to.context("NATIVE_APP...") # 这个NATIVE_APP是固定的参数 方法二:driver.switch_to.context(contexts[0]) # 从contexts里取第一个参数 ?...五、参考代码 # coding:utf-8 from appium import webdriver import time desired_caps = {'platformName': 'Android
首先,从Select类的有参构造函数可以看出,在初始化一个select时,需要WebElement作为入参。接下来,我们看看,Select类提供了哪些函数吧。...这些方法的返回值都是WebDriver,我们可以理解为driver的焦点发生了转移。因此,有一点需要留意,既然焦点转移到了新的页面上,那么想要定位原页面的元素,就要跳转回去。...,有两种情形: 在当前窗口加载新页面内容 新建一个窗口加载新页面内容,这种情况在a标签有target="_blank"时触发 当发生第2种情况时,同上文的frame类似,由于driver的焦点还停留在原窗口...,我们在新窗口的页面上定位元素时,自然会产生错误,因此引出driver焦点跳转问题。...所以我们可以使用 sendKeys(Keys.TAB) 来切换元素的焦点,从而达到选择元素的作用,这个最常用到的场景就是在用户名和密码的输入过程中。
'图片').click() # 这两个属性可以用来做断言使用 print("当前页面标题:", driver.title) print("当前页面的url:", driver.current_url)...# 这里关闭的是原始页面,而不是新的页面,只有完成页面切换才可以关闭新的页面 # 场景:关闭单个页面使用 driver.close() sleep(3) # 关闭浏览器驱动对象的所有页面 driver.quit...在一些特殊场景中,一些按钮是在页面最下角,需要使用滚动条拉到最底层。...frame的切换 回到主页面的方法:driver.switch_to.default_content() """ 需要默认切换到frame 方法:driver.switch_to.default_content...,但是selenium默认焦点只会在主窗口上的所有元素,不切换窗口,就不能操作除主窗口以外的窗口内元素。
最好不使用指定标签名称,不使用* 代替,效率非常慢 / 后面必须为元素的名称 或者 * XPath定位策略 四种: 路径-定位 匹配输入账号(相对路径) //input[@id='usernameA']...CSS定位 css 作为一种标记语言, 焦点、数据的样式。控制元素的显示样式。...browser.switch_to.frame(frame_reference):切换到指定的iframe窗口 browser.execute_script(script):在当前页面执行指定的JavaScript...脚本 browser.save_screenshot(filename):将当前页面截图保存为指定的文件 测试 driver = webdriver.Chrome(service=service)...") sleep(2) # todo 获取所有的窗口句柄 windows = driver.window_handles driver.switch_to.window(windows[1]) # 从0
启动 我们将一切准备就绪后就可以开始我们的selenium之旅了,首先我们需要将使用selenium进行浏览器的启动(访问百度)。...标签页中会将焦点对应跳转至该元素的html代码行中,接下来我们就可以针对不同的元素和不同的属性来进行定位操作。...首先我们需要明确的是每种类型的弹窗中元素也是各不相同,所以我们针对不同的弹窗使用不同的属性来定位和操作。 警告弹窗 一般来说就是告知到使用者执行某些操作与页面之后将要注意的事项,这种窗口只需确认。...()sleep(1)# 在警告弹窗中点击确认按钮browser.switch_to_alert().accept() 确认弹窗 多用于在用户执行提交操作后的动作确认,有确认和取消两个选项。...,无论是从文件中还是提取又或者是遍历,出现少字漏字的话,同样也可以使用延时的方法,适当的放慢处理的速度; 在页面中总会有些不可见的元素,这种情况使用is_displayed()方法即可快速定位找到;
使用前,需要先导入keys类 from selenium.webdriver.common.keys import Keys send_keys()方法用来模拟键盘输入,常用的键盘操作: send_keys...判断某个元素中是否不存在于dom树或不可见 element_to_be_clickable : 判断某个元素中是否可见并且是enable的,这样的话才叫clickable staleness_of :等某个元素从dom...用法: import time time.sleep(5) #停留5秒以后再继续操作 frame/iframe/window切换 1、有时候页面会经常遇到frame/iframe嵌套,WebDriver...只能在一个页面上对元素识别与定位,这个时候需要切换到相应的frame/iframe里面。...注意: driver.switch_to.alert.send_keys('hello world') #只对prompt有效 driver.switch_to.alert.accept() #确认
Selenium的使用 14 /10 周一阴 1 动态渲染页面爬取 对于访问Web时直接响应的数据(就是response内容可见),我们使用urllib、requests或Scrapy框架爬取。...driver = webdriver.Edge() driver = webdriver.Safari() driver = webdriver.PhantomJS() #无界面浏览器 ③ 访问页面...send_keys(* keys_to_send )-- 将键发送到当前的焦点元素。...from selenium import webdriver #创建浏览器对象 driver = webdriver.Chrome() #使用隐式等待(固定时间) driver.implicitly_wait...使用JavaScript开启一个新的选型卡 driver.execute_script('window.open()') print(driver.window_handles) #切换到第二个选项卡,
领取专属 10元无门槛券
手把手带您无忧上云