python-selenium -- iframe及滚动条定位方法详解

一、frame框架里面的元素定位

  1.1 iframe定位 -- 先切换到iframe框架-定位-释放iframe

  定位到iframe的方法

"""Switches focus to the specified frame, by index, name, or webelement.

:Args: - frame_reference: The name of the window to switch to, an integer representing the index,                    or a webelement that is an (i)frame to switch to.

:Usage:    driver.switch_to.frame(‘frame_name‘)    driver.switch_to.frame(1)    driver.switch_to.frame(driver.find_elements_by_tag_name("iframe")[0])"""

#切换到iframe
driver.switch_to.frame("login_frame_qq")#点击账号密码登录driver.find_element_by_xpath(‘//a[@id="switcher_plogin"]‘).click()time.sleep(2)#输入账号密码

#释放iframe 回到主页面driver.switch_to.default_content()

二、滚动条之后的元素定位   2.1 先把元素拖动到可见区域-定位  

1、移动到元素element对象的“底端”与当前窗口的“底部”对齐:
     driver.execute_script("arguments[0].scrollIntoView(false);",element)

2、移动到元素element对象的“顶端”与当前窗口的“顶部”对齐  :
     driver.execute_script("arguments[0].scrollIntoView();",element)

3、移动到页面底部:
      driver.execute_script("window.scrollTo(0,document.body.scrollHeight)")

4、移动到页面顶部:
     driver.execute_script("window.scrollTo(document.body.scrollHeight,
     0)")

如:
#定位百度搜索框driver.find_element_by_id("kw").send_keys("python")time.sleep(3)driver.find_element_by_id("su").click()time.sleep(5)

#找到这个元素ele = driver.find_element_by_xpath(‘//a[text()="_百度百科"]‘)#拖动元素到可见区域--scrollIntoView() 拖到顶部显示,有可能会百度被遮罩层遮挡,定位不到而报错;使用scrollIntoView(false)可视区域底部对齐driver.execute_script("arguments[0].scrollIntoView(false);",ele)

time.sleep(3)ele.click()

原文地址:https://www.cnblogs.com/simran/p/9235853.html

时间: 2024-11-05 15:58:26

python-selenium -- iframe及滚动条定位方法详解的相关文章

xpath定位方法详解

1.xpath较复杂的定位方法: 现在要引用id为“J_password”的input元素,可以像下面这样写: WebElement password = driver.findElement(By.xpath("//*[@id='J_login_form']/dl/dt/input[@id='J_password']")); 其中//*[@id=’ J_login_form’]这一段是指在根元素下查找任意id为J_login_form的元素,此时相当于引用到了form元素.后面的路径

python的内置模块random随机模块方法详解以及使用案例(五位数随机验证码的实现)

1.random(self): Get the next random number in the range [0.0, 1.0) 取0到1直接的随机浮点数 import random print(random.random()) C:\python35\python3.exe D:/pyproject/day21模块/random随机模块.py 0.3105503800442595 2.randint(self, a, b) Return random integer in range [a

python学习第四周之内置方法详解

1.python的内置方法有很多,用的时候可以自行百度,我只写几个我感兴趣的(任性.) 2.(1)bin(),将十进制转变为二进制 >>> bin(2) '0b10' (2)chr(),查看数字所对应的字母, >>> chr(98) 'b' (3)ord(),查看字母对应的数字 >>> ord('a') 97 (4)hex(),转换成十六进制 >>> hex(255) '0xff' (5)oct(),转成成八进制 >>&g

转python爬虫:BeautifulSoup 使用select方法详解

1 html = """ 2 <html><head><title>The Dormouse's story</title></head> 3 <body> 4 <p class="title" name="dromouse"><b>The Dormouse's story</b></p> 5 <p class=

Python学习之异常重试解决方法详解

本文和大家分享的是在使用python 进行数据抓取中,异常重试相关解决办法,一起来看看吧,希望对大家学习python有所帮助. 在做数据抓取的时候,经常遇到由于网络问题导致的程序保存,先前只是记录了错误内容,并对错误内容进行后期处理. 原先的流程: defcrawl_page(url): pass deflog_error(url): pass url = "" try: crawl_page(url) except: log_error(url) 改进后的流程: attempts =

Python中pickle模块的使用方法详解

python的pickle模块实现了基本的数据序列和反序列化.通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储:通过pickle模块的反序列化操作,我们能够从文件中创建上一次程序保存的对象.本文和大家分享的就是python开发中pickle模块的相关使用,一起来看看吧. 基本接口: pickle.dump(obj, file, [,protocol]) 注解:将对象obj保存到文件file中去. protocol为序列化使用的协议版本,0:ASCII协议,所

python爬虫:BeautifulSoup 使用select方法详解

1 html = """ 2 <html><head><title>The Dormouse's story</title></head> 3 <body> 4 <p class="title" name="dromouse"><b>The Dormouse's story</b></p> 5 <p class=

python hasattr() getattr() setattr() 函数使用方法详解

hasattr(object, name) 函数: 判断一个对象里面是否有name属性或者name方法,返回bool值,有name属性返回True,否则返回False. 注意: name要用括号括起来. class function_demo(): name = 'demo' def run(self): return "hello function" functiondemo = function_demo() res = hasattr(functiondemo, 'name')

python-xpath定位方法详解

一.xpath基本定位用法 1.1 使用id定位 -- driver.find_element_by_xpath('//input[@id="kw"]') 1.2 使用class定位 -- driver.find_element_by_xpath('//input[@class="s_ipt"]') 1.3 当然 通过常用的8种方式结合xpath均可以定位(name.tag_name.link_text.partial_link_text)以上只列举了2种常用方式哦