Selenium 3----定位一组元素+多表单切换+多窗口切换

定位一组元素

和定位单个元素类似,WebDriver提供了8种用于定位一组元素的方法。定位一组元素的方法与定位单个元素的方法类似,唯一的区别是在单词element后面多了一个s表示复数。

find_elements_by_id()
find_elements_by_name()
find_elements_by_class_name()
find_elements_by_tag_name()
find_elements_by_link_text()
find_elements_by_partial_link_text()
find_elements_by_xpath()
find_elements_by_css_selector()

  代码演示:

from selenium import webdriver
from time import sleep

driver = webdriver.Chrome()
driver.get(‘https://www.baidu.com‘)

driver.find_element_by_id(‘kw‘).send_keys(‘selenium‘)
driver.find_element_by_id(‘su‘).click()
sleep(1)
#定位一组元素
texts = driver.find_elements_by_xpath(‘//div/h3/a‘)
#循环遍历出每一条搜索结果的标题
for t in texts:
    print(t.text)
sleep(1) #主要目的是为了等待定位元素遍历,不然 关闭太快抓取不到
driver.close()

  多表单切换 switch_to.frame()

多窗口切换 switch_to.window()方法

在页面操作过程中有时候点击某个链接会弹出新的窗口,这时就需要主机切换到新打开的窗口上进行操作。

current_window_handle:获得当前窗口句柄。

window_handles:返回所有窗口的句柄到当前会话。

switch_to.window():用于切换到相应的窗口,与上一节的switch_to.frame()类似,前者用于不同窗口的切换,后者用于不同表单之间的切换。

  

from selenium import webdriver
from time import sleep

driver = webdriver.Chrome()
#设置隐式等待时间为10秒
driver.implicitly_wait(10)
driver.get(‘https://www.baidu.com‘)

# 获得百度搜索窗口句柄
sreach_windows = driver.current_window_handle
driver.find_element_by_link_text(‘登录‘).click()
driver.find_element_by_link_text("立即注册").click()
#获得当前所有打开的窗口的句柄
all_handles=driver.window_handles
#进入注册窗口
for handle in all_handles:
    if handle != sreach_windows:
        driver.switch_to.window(handle)
        print(‘now register window!‘)
        driver.find_element_by_name("account").send_keys(‘username‘)
        driver.find_element_by_name(‘password‘).send_keys(‘password‘)
        sleep(2)
        #会报错
driver.quit()

原文地址:https://www.cnblogs.com/nfgg/p/10599389.html

时间: 2024-07-28 22:34:58

Selenium 3----定位一组元素+多表单切换+多窗口切换的相关文章

selenium - webdriver - 定位一组元素

八种方法: find_elements_by_id() find_elements_by_name() find_elements_by_class_name() find_elements_by_tag_name() find_elements_by_link_text() find_elements_by_partial_link_text() find_elements_by_xpath() find_elements_by_css_selector() 实例: from selenium

Selenium 定位一组元素

到目前为止,我们已经知道了怎么去定位一个元素,有时候我们需要获取页面上的多个元素,该怎么办呢?难道还一个一个地去定位,那也太lower了吧. webdriver提供了定位一组元素的方法,跟前面讲的那八种定位方法一样,只不过定位一个元素是单数:find_element,定位一组元素是复数:find_elements 我们以百度搜索结果页面为例. 在百度搜索框输入"selenium",点击"百度一下"按钮,查看页面元素 从搜索结果的页面html代码可以看到,每条搜索结果

第3天:CSS浮动、定位、表格、表单总结

今天学的是浮动.定位.表格.表单等内容,这些是CSS中最容易混淆的知识,有许多小技巧在写代码过程中需要注意.下面是主要知识点: 一.float浮动1.块元素在一行显示2.内联元素支持宽高3.默认内容撑开宽度4.脱离文档流5.提升层级半层二.clear清除浮动1.加高(扩展性不好)给浮动元素的父级设置同样的高度2.给父级加浮动(页面中所有元素都要加浮动,margin左右失效)3.inline-block(margin左右auto失效)4.空标签加浮动(div )(任何用到的地方都要加).clear

定位一组元素.py

from selenium import webdriverimport os,timedriver = webdriver.Chrome()driver.get("http://www.baidu.com")#选择页面上所有的tag name为input的元素inputs = driver.find_elements_by_tag_name("input") """通过tag name的定位方式很难定位到单个元素,因为元素标签名重名的

定位一组元素,点击一组中第几个按钮

def xunhuan2(self): lie = self.driver.find_elements_by_css_selector('li.fp14') liebiao = len(lie) for lie in range(liebiao): self.driver.find_elements_by_css_selector('li.fp14')[lie].click() sleep(3) self.driver.back() sleep(3) 1.定义循环函数2.定义变量,使用定位一组元

【Python】定位一组元素、

前几天生病加懒惰 TAT ========================================================================== 1.getAttribute()方法是一个函数.它只有一个参数--你打算查询的属性的名字: 2.http://www.cnblogs.com/fnng/p/3190966.html 注意路径 3. [Python]定位一组元素.,布布扣,bubuko.com

WEB 页面 控制表单内tab键切换的顺序

在Html代码中有一个键盘属性——tabindex,它可以设置访问者在页面中按tab键的顺序.如下: <input type="button" id="b1" tabIndex="1" value="Button1" /> <input type="button" id="b2" tabIndex="2" value="Button2&qu

JS~模拟表单在新窗口打开,避免广告拦截

说起广告拦截,这应该是浏览器的一个特性,它会将window.open产生的窗口默认为一个广告,将它进行拦截,但有时,这不是我们所希望的,有时,我们就是需要它在客户端的浏览器上弹出一个新窗口,以展示数据处理的更新结果,例如,一个创建商品的预览功能,它需要先保存数据,然后再在新窗口展示最新的信息,这种需求并不少,而大多数人的作法就是使用window.open去弹窗口,但它确实不是一种好的方式! 新方式来了 我们知道表单提交实际上可以把POST的结果响应到新窗口上,我们就是利用表单的这种性质,在JS中

selenium学习:定位一组元素

文件名:checkbox.html <html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8"/> <title>Checkbox</title> <link href="http://cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap.min.css&