定位frame中的元素,回传书籍到kindle上
分类:计算机编程

个人对selenium的理解:

1.施用selenium操作浏览器,实际上是使用selenium框架下的webdriver运转各浏览器的驱动完毕对浏览器的操作的。以下两句代码就可以运维firefox浏览器驱动

from selenium import webdriver

brower=webdriver.Firefox()

因此,selenium的作用实际上相当于模拟了用户操作浏览器(点击链接、按钮、填写表单、截屏、控制窗口大小、安装插件、配置证书等操作)。
webdriver能够操纵浏览器的原因是webdriver封装了浏览器的API。由于不同厂家生产的浏览器API实现方式不大相同,因此webdriver也分FirefoxDriver、ChromeDriver、iOSDriver等驱动。
调用不同的浏览器,我们除了要安装导入webdriver模块外,还要下载相对应浏览器的驱动。

2.webdriver能够定位节点,

selenium学习课程:

1、Mr.南柯

功用:将QQ阅读的秘书下载,并回传到kindle上

固定成分时平常会忍俊不禁一定不到成分,那个时候咱们必要观望标签的上下文,平日意况下那么些定位不到的成分寄放在了frame只怕放置窗口了,只要大家切入进去就足以超级轻巧定位到成分。

大器晚成、定位有关内容:

1、定位不到的四种状态及化解办法

2、iframe影响牢固后的切换与拍卖

主要的八个函数:

brower.switch_to.frame(reference)  切入referrence这个frame中

brower.switch_to.parent_frame()  切回父frame中

brower.swith_to.default_content(卡塔尔国切回主页面中,要是要在多少个平行的frame中切换,必得增多这一句回到主页面后再切换至此外iframe中

使用模块:

  1. selenium

from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
import time
from selenium.webdriver.common.action_chains import ActionChains

  1. email

from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email import Encoders, Utils
import smtplib
from email.Header import Header

  1. getopt

import getopt, sys
reload(sys)
sys.setdefaultencoding('utf-8')

拍卖frame时入眼运用到switch_to.frame(卡塔尔(英语:State of Qatar)(切入frame也能够些写成switch_to_frame,然则那些已经用的比比较少了)和switch_to_default_content(卡塔尔(英语:State of Qatar)四个办法,三个珍视是切入到iframe里面,三个是切换来主文书档案中,经常景况那多少个要同盟着用,切进去年今年后操作达成成分之后,将要在切回到主文档,制止有个别任何的失实。

二、selenium相关办法

1、Python Selenium 常用方法总括

三、selenium各种包

from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

 

注意事项:

  1. selenium定位以致切换frame(iframe)
    frame标签有frameset、frame、iframe两种,frameset跟任何通常标签未有分化,不会影响到健康的永世,而frame与iframe对selenium定位来讲是相似的,selenium有后生可畏组方法对frame实行操作。
    故此假若善用以下多少个办法,碰到frame分分钟消除:

driver.switch_to.frame(reference) #切入frame,使用id,或者name属性
driver.switch_to.parent_frame()#切回上一流frame
driver.switch_to.default_content()#切回主页面

  1. 一声令下行传入参数
    try:
        opts, args = getopt.getopt(sys.argv[1:], "f:u:", [])
    except getopt.GetoptError:
        # print help information and exit:
        pass

    for name, value in opts:
            if  name in ("-u"):
                url1 = value
            if name in ("-f"):
                filename1 = value

    print url1,filename1
  1. 发邮件
    filename = filename   ".txt"
    server = 'smtp.163.com'
    username = "rufus_tang"
    password = 'y880228'
    from_mail = 'rufus_tang@163.com'
    to_mail = '15825279415_e6b0cb@kindle.cn'

    smtp = smtplib.SMTP()
    smtp.connect(server)
    smtp.login(username, password)

    msg = MIMEMultipart()
    msg['to'] = to_mail
    msg['from'] = from_mail
    msg['Subject'] = "Convert"
    msg['Date'] = Utils.formatdate(localtime=1)

    content = open(filename, 'rb').read()
    att = MIMEText(content, 'base64', 'utf-8')
    att['Content-Type'] = 'application/octet-stream'
    att["Content-Disposition"] = "attachment;filename="%s"" % Header(filename, 'gb2312')

    msg.attach(att)

    smtp.sendmail(msg['from'], msg['to'], msg.as_string())
    smtp.quit()
  • switch_to.frame()  #比如frame 中有name和id属性就一贯选择id也许name举办固化,若无id和name属性,能够通过find_element_by_xpath(或许其余定位)方法定位到那几个iframe成分,然后把这么些成分传进去。

    #-- coding:utf-8 -- '''126信箱登录''' import time import unittest from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC

    class WANGYI(unittest.TestCase):

    def setUp(self):
        print('开始测试')
        self.username = 'yuhuan2006_2548'  # 定义账号
        self.password = 'xxxxx'   #定义密码
        self.driver = webdriver.Chrome()
        self.driver.maximize_window()
        self.base_url = "http://mail.126.com/"
        self.driver.get(self.base_url)
    
    def test_login(self):
        '''测试登陆126邮箱'''
        WebDriverWait(self.driver,10).until( EC.presence_of_element_located((By.ID, "x-URS-iframe")))
        self.driver.switch_to.frame("x-URS-iframe")  #切换进入frame 在这里也可以写self.driver.switch_to.frame(self.driver.find_element_by_xpath('//*[@id="x-URS-iframe"]')),先定位元素
        self.driver.find_element_by_name("email").send_keys(self.username)
        self.driver.find_element_by_name("password").send_keys(self.password)
        self.driver.find_element_by_id("dologin").click()
        WebDriverWait(self.driver,10).until( EC.presence_of_element_located((By.ID, "spnUid"))) #增加等待时间,判断验证信息元素是否显示
        verifyLoginSucceed = self.driver.find_element_by_xpath('//*[@id="spnUid"]').text
        self.assertIn(self.username,verifyLoginSucceed)    #验证是否登陆成功
    def tearDown(self):
        self.driver.implicitly_wait(30)
        self.driver.quit()
        print('测试结束')
    

    if name == 'main':

    unittest.main()
    

无独有偶有人问我126信箱怎么输入账号和密码,起首他以为是出于Input标签的品质导致未有主意输入账号,后来恰恰一时光了,看了须臾间126信箱的你苏醒,发掘此处便是利用了iframe切换,所以在这间总括了一晃frame,而且以126邮箱为例子写了刹那间。

本文由pc28.am发布于计算机编程,转载请注明出处:定位frame中的元素,回传书籍到kindle上

上一篇:指南初藳意见的通告,哈拉雷市城市和乡建委员 下一篇:没有了
猜你喜欢
热门排行
精彩图文
  • 那些年【深入.NET平台和C#编程】
    那些年【深入.NET平台和C#编程】
    一、深入.NET框架 ArrayList (非泛型集合  using System.Collections;) public void Text1(){ ArrayList al = new ArrayList (); al.Add ("刘德化");       //添加元素 al.Add ("张学友
  • 碰着搭建
    碰着搭建
    Appium是移动端的自动化测试工具,类似于前面所说的Selenium,利用它可以驱动Android、iOS等设备完成自动化测试,比如模拟点击、滑动、输入等操作,其官方
  • Django中的CBV和FBV示例介绍
    Django中的CBV和FBV示例介绍
    Django中的CBV和FBV Django中的CBV和FBV示例介绍,djangocbvfbv示例 前言 本文主要给大家介绍了关于Django中CBV和FBV的相关内容,分享出来供大家参考学习,下面话不
  • 将Log4net的配置配置到的独立文件中,Log4Net日志插
    将Log4net的配置配置到的独立文件中,Log4Net日志插
  • Python面向对象编程思想
    Python面向对象编程思想
    Python中的类(一) 1.面向过程编程:计算机通过一系列指令来一步一步完成任务。 面向对象编程——Object OrientedProgramming,简称OOP,是一种程序设计思想。