Selenium 常用控件用法

1、文本框

  

  上图中,如何定位搜索文本框,并输入搜索内容进行搜索

  首先:利用方法 find_element_by_xpath定位元素:inputElements = self.driver.find_element_by_xpath("//input[@class='W_input']")

  其次:在文本框中输入要搜索的内容:inputElements.send_keys(u'足球') #在文本框中输入“足球”

  最后:点击回车,进行搜索:inputElements.send_keys(Keys.ENTER)

  上面这种方式效率较低,效率较高的方式为执行js脚本:

  js = "var obj = document.getElementsByName('keyword')[0];obj.value='足球';"

  self.driver.execute_script(js)

2、href链接

  第一种情况:href中内容为链接地址:如下图

    

    这种情况如何打开链接?

    首先定位元素:nextElement = self.driver.find_element_by_xpath("//a[@class='page next S_txt1 S_line1']")

    获取href链接:nextUrl = nextElement.get_attribute('href')
    打开链接:     self.driver.get(nextUrl)

  第二种情况:href中内容为“javascript:void(0);”:如下图

  

  如何打开上图中“高级搜索”这个链接

  定位元素:adv_elements = self.driver.find_element_by_xpath("//a[@class='adv_settiong']")

   打开:adv_elements.click()

3、radio

  选择对应的radio

  

  

ori_elements = self.driver.find_element_by_id("radio03")
ori_elements.click()

4、下拉列表

  

  

  1、直接定位

  self.driver.find_element_by_xpath("//select[@name='prov']/option[@value='11']").click() 

  2、Select模块(index):直接根据属性或索引定位  

  先要导入select方法:from selenium.webdriver.support.select import Select  

  然后通过select选项的索引来定位选择对应选项(从0开始计数),如选择第三个选项:select_by_index(2)

  prov = self.driver.find_element_by_xpath("//select[@name='prov']")

  Select(prov).select_by_index(2)#索引从0开始

  3、Select模块(value):直接根据属性或索引定位

  Select模块里面除了index的方法,还有一个方法,通过选项的value值来定位。每个选项,都有对应的value值

  prov = self.driver.find_element_by_xpath("//select[@name='prov']")

  Select(prov).select_by_value("11")

  4、Select模块(text)

  Select模块里面还有一个更加高级的功能,可以直接通过选项的文本内容来定位。 

  prov = self.driver.find_element_by_xpath("//select[@name='prov']")

  Select(prov).select_by_visible_text(u'北京')

5、时间控件

  

  把时间控件的只读属性去掉,直接赋给时间控件时间

  第一种方式:

    startTime = self.driver.find_element_by_xpath("//input[@name='stime']")

    js = 'document.getElementsByName("stime")[0].removeAttribute("readonly")'

    #js = 'document.getElementByID("stime").removeAttribute("readonly")'

    self.driver.execute_script(js)

    startTime.clear()

    startTime.send_keys("2017-03-25")

    这种方式效率较低

  第二种方式是执行js脚本,效率较高:

    js = 'var obj = document.getElementsByName("stime")[0];obj.removeAttribute("readonly");obj.value="2017-03-25";'

    self.driver.execute_script(js)

    两行代码就可以搞定

[Python爬虫] 之六:Selenium 常用控件用法的更多相关文章

  1. iOS开发之六:常用控件--UIImageView的使用

    UIImageView是我们做iOS开发用的非常多的一个控件,IOS中的各种图片,包括头像,有的背景图片等基本都要用到这个控件. 1.常用的属性以及方法 <span style="fo ...

  2. Android笔记---常用控件以及用法

    这篇文章主要记录下Android的常用控件以及使用的方法,Android 给我们提供了大量的UI控件,合理地使用这些控件就可以非常轻松地编写出相当不错的界面,这些是Android学习的基础,没有什么业 ...

  3. MFC编程入门之二十(常用控件:静态文本框)

    上一节讲了颜色对话框之后,关于对话框的使用和各种通用对话框的介绍就到此为止了.从本节开始将讲解各种常用控件的用法.常用控件主要包括:静态文本框.编辑框.单选按钮.复选框.分组框.列表框.组合框.图片控 ...

  4. python爬虫:一些常用的爬虫技巧

    python爬虫:一些常用的爬虫技巧 1.基本抓取网页 get方法: post方法: 2.使用代理IP 在开发爬虫过程中经常会遇到IP被封掉的情况,这时就需要用到代理IP; 在urllib2包中有Pr ...

  5. C# 常用控件属性及方法介绍

      C#常用控件属性及方法介绍                                               目录 1.窗体(Form) 2.Label (标签)控件 3.TextBox ...

  6. CustomValidator控件用法

    虽然大部分时间一直从事asp.net的开发,对于一些常用的asp.net服务器端验证控件及它们的组合使用比较熟悉,如:CompareValidator ——比较验证控件RangeValidator — ...

  7. EasyUI常用控件禁用方法

    EasyUI常用控件禁用方法: 1.validatebox可以用的用法:前两种适用于单个的validatebox; 第三种应用于整个form里面的输入框; <1>.$("#id& ...

  8. VS2010/MFC编程入门之二十二(常用控件:按钮控件Button、Radio Button和Check Box)

    言归正传,鸡啄米上一节中讲了编辑框的用法,本节继续讲解常用控件--按钮控件的使用. 按钮控件简介 按钮控件包括命令按钮(Button).单选按钮(Radio Button)和复选框(Check Box ...

  9. VS2010/MFC编程入门之二十(常用控件:静态文本框)

    上一节鸡啄米讲了颜色对话框之后,关于对话框的使用和各种通用对话框的介绍就到此为止了.从本节开始鸡啄米将讲解各种常用控件的用法.常用控件主要包括:静态文本框.编辑框.单选按钮.复选框.分组框.列表框.组 ...

随机推荐

  1. asp.net传多个值到其它页面的方法

    网站开发中,在页面之间的跳转,经常会用到传值,其中可能会传递多个值. 一.CommadArgument传多个值到其他页面. 像Gridview dataList repeater等数据绑定控件中,可以 ...

  2. 【WPF】奇怪的INotifyPropertyChanged的实现

    MSDN是这样解释的: INotifyPropertyChanged 接口用于向客户端(通常是执行绑定的客户端)发出某一属性值已更改的通知. 例如,考虑一个带有名为 FirstName 属性的 Per ...

  3. EOJ 3263 丽娃河的狼人传说

    差分约束系统,$spfa$. 首先判断无解,若某个约束的$t$大于区间长度,则一定无解. 否则一定有解,可以得到一系列的不等式: 最终区间和大于等于目前的区间和:$S[R]-S[L-1]≥val$, ...

  4. Lock接口简介

    在Java多线程编程中,我们经常使用synchronized关键字来实现同步,控制多线程对变量的访问,来避免并发问题. 但是有的时候,synchronized关键字会显得过于沉重,不够灵活.synch ...

  5. react篇章-React 组件-ES6 class 来定义一个组件

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title&g ...

  6. ironic简介

    转:https://doodu.gitbooks.io/openstack-ironic 简介 Bare Metal Servcie 裸机服务 -- 'bear betal' ironic简介 如今O ...

  7. 【Splay 总结】

    很多年前学的splay已经忘了? BZOJ 3729 要用Splay啊哭..强制在线.. 二叉查找树 二叉排序树(Binary Sort Tree)又称二叉查找树(Binary Search Tree ...

  8. [BZOJ4311]向量(凸包+三分+线段树分治)

    可以发现答案一定在所有向量终点形成的上凸壳上,于是在上凸壳上三分即可. 对于删除操作,相当于每个向量有一个作用区间,线段树分治即可.$O(n\log^2 n)$ 同时可以发现,当询问按斜率排序后,每个 ...

  9. 最封闭的开源系统,话说Android的八宗罪

    最封闭的开源系统,话说Android的八宗罪 http://www.ifanr.com/9833 Android 分裂的多面性 http://tech.cncms.com/shouji/android ...

  10. EntityFramework中几种操作小结

    目前项目中使用到的EntityFramework中几种操作小结,先标记下.没有详细介绍,后续有空的话再补充一些并完善一下. 列中加入RowVersion时间戳 public class Product ...