美文网首页
Selenium自动化准备

Selenium自动化准备

作者: 千鸟月读 | 来源:发表于2019-04-27 00:00 被阅读0次

关于一些前提准备条件和说明

  • 支持Chrome、Firefox、IE、Phantomjs等浏览器

  • 需要下载对应浏览器的webDriver,其中Phantomjs无头浏览器不需要下载webdriver,其优点是不需要加载网页,速度比较快,Firefox有些条件下可以不用driver

  • 这里引入常见的driver下载地址,Chrome webdriver下载地址一...
    为防止官方下载地址失效,这里备份到文件服务器70.0~73.0 Chrome版本(同一大版本,基本兼容小版本) Chrome webDrive下载地址二...
    火狐浏览器Firefox WebDriver IE浏览器IE webDriver

  • 方法1:webDriver需要放在浏览器安装目录下(执行文件同级目录,并且加入环境变量)。 方法2:直接将webDriver拷贝到脚本同级目录下执行。方法3:
    导入os包,将脚本执行目录切换到webDriver的目录下(os.chdir(path))

  • Phantomjs浏览器安装,下载地址,win下解压zip包,将bin目录加到系统环境变量,在命令行输入phantomjs,既可看到。
    Phantomjs使用教程

  • 安装selenium,基于Python的selenium安装,pip install selenium,查看版本 pip show selenium

  • 最新Firefox和Seleniu兼容有问题,相关解决方案:

    • 安装旧版本Firefox47,同时安装插件firebug和firepath(写爬虫很有用),这里需要关闭火狐浏览器的自动更新功能(百度查找方法),
      Firefox下载地址
    • Selenium3以前的版本,使用firefox不需要webdriver,3.x后的版本需要安装webdriver,下载地址上有说明
  • 结合的测试框架(基于Python):

    • unittest: 一般python环境自带,示例代码:
    import unittest
    
    def fun(x):
        return x + 1
    
    class MyTest(unittest.TestCase):
        def test(self):
            self.assertEqual(fun(3), 4)
    

    使用说明详细


    常见断言:

    #msg:判断不成立时需要反馈的字符串
    assertEqual(self, first, second, msg=None)
    --判断两个参数相等:first == second
    assertNotEqual(self, first, second, msg=None)
    --判断两个参数不相等:first != second
    assertIn(self, member, container, msg=None)
    --判断是字符串是否包含:member in container
    assertNotIn(self, member, container, msg=None)
    --判断是字符串是否不包含:member not in container
    assertTrue(self, expr, msg=None)
    --判断是否为真:expr is True
    assertFalse(self, expr, msg=None)
    --判断是否为假:expr is False
    assertIsNone(self, obj, msg=None)
    --判断是否为None:obj is None
    assertIsNotNone(self, obj, msg=None)
    --判断是否不为None:obj is not None
    

Selenium介绍,来源: selenium中文文档

注意!!!如果使用远程webDriver,需要安装selenium服务器:

  1. 需要Java Runtime Environment (JRE) 1.6或者更高的版本是推荐的运行环境。
  2. server下载地址:下载地址1,我的服务器下载地址2
  3. 针对以及装好java环境和下载好了server的win系统,命令行运行:java -jar selenium-server-standalone-2.x.x.jar(这里我没有成功,可能是java环境没装好,什么时候用得到远程再来折腾)

    linux下/path/to/java -jar /path/to/selenium-server-standalone-2.x.x.jar

1. 打开一个页面

  • 导入selenium包后绑定对应浏览器的webdriver

    driver.get("http://www.zhihu.com")

  • 页面元素查找

    • find_element_by_name()
    • find_element_by_class_name()
    • find_element_by_xpath()这种定位方式参考 xpath语法一般浏览器自带的源代码检查可以copy xpath格式
    • find_element_by_css_selector()参考CSS语法 selector语法一般浏览器自带的源代码检查可以copy selector格式
    • find_element_by_tag_name () 标签名定位
    • find_element_by_link_text() find_element_by_partial_link_text() 二者都是点位超链接,第一种需要定位完整的超链接字段,第二种可以匹配部分超链接字段
    • find_element(By.ID,"kw")
    • find_element(By.NAME,"wd")
    • find_element(By.CLASS_NAME,"s_ipt")
    • find_element(By.TAG_NAME,"input")
    • find_element(By.LINK_TEXT,u"新闻")
    • find_element(By.PARTIAL_LINK_TEXT,u"新")
    • find_element(By.XPATH,"//*[@class='bg s_btn']")
    • find_element(By.CSS_SELECTOR,"span.bg s_btn_wr>input#su")
    • 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()
  • 页面交互

    • element.send_keys("some text")发送关键词到input
    • element.send_keys(" and some", Keys.ARROW_DOWN)自带的键盘模拟类执行enter
    • .click 选择
    • .submit提交表单

更多关于selenium API参考 中文文档

相关文章

网友评论

      本文标题:Selenium自动化准备

      本文链接:https://www.haomeiwen.com/subject/pyxxnqtx.html