Ajax简介:

Ajax:局部刷新,原理上也是一个js,js调用服务器的远程接口刷新局部页面数据。

Ajax = 异步 JavaScript 和 XML标准通用标记语言的子集)。

Ajax 是一种用于创建快速动态网页的技术。

Ajax 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。 [1]

通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

传统的网页(不使用 Ajax)如果需要更新内容,必须重载整个网页页面。

方法一:因为浮动窗的内容可能会时常发生变化,如果想固定选择浮动框中的某一项,比如第三项,代码如下:

  1. #encoding=utf-8
  2. from selenium import webdriver
  3. from selenium.common.exceptions import NoSuchElementException
  4. import traceback
  5. import unittest
  6. import time
  7.  
  8. class TestDemo(unittest.TestCase):
  9.  
  10. def setUp(self):
  11. # 启动Chrome浏览器
  12. self.driver = webdriver.Ie(executable_path = "e:\\IEDriverServer")
  13.  
  14. def test_AjaxDivOptionByIndex(self):
  15. url = "http://www.sogou.com/"
  16. # 访问sogou的首页
  17. self.driver.get(url)
  18. try:
  19. # 找到搜狗首页中的搜索输入框页面元素
  20. searchBox = self.driver.find_element_by_id("query")
  21. # 在搜索输入框中输入“光荣之路”
  22. searchBox.send_keys(u"光荣之路")
  23. # 等待2秒,以便悬浮框加载完成
  24. time.sleep(2)
  25. # 查找浮动框中的第三选项,只要更改li[3]中的索引数字,
  26. # 就可以实现任意单击选项浮动框中的选项。注意,索引从1开始
  27. suggetion_option = self.driver. \
  28. find_element_by_xpath("//*[@id='vl']/div[1]/ul/li[3]")
  29. #print suggetion_option.text
  30. # 点击找到的选项
  31. suggetion_option.click()
  32. time.sleep(3)
  33. except NoSuchElementException, e:
  34. # 打印异常堆栈信息
  35. print traceback.print_exc()
  36.  
  37. def tearDown(self):
  38. # 退出IE浏览器
  39. self.driver.quit()
  40.  
  41. if __name__ == '__main__':
  42. unittest.main()

方法二:通过匹配模糊内容选择悬浮框中的选项,代码如下:

  1. #encoding=utf-8
  2. from selenium import webdriver
  3. from selenium.common.exceptions import NoSuchElementException
  4. import traceback
  5. import unittest
  6. import time
  7.  
  8. class TestDemo(unittest.TestCase):
  9.  
  10. def setUp(self):
  11. # 启动Chrome浏览器
  12. self.driver = webdriver.Ie(executable_path = "e:\\IEDriverServer")
  13.  
  14. def test_AjaxDivOptionByWords(self):
  15. url = "http://www.sogou.com/"
  16. # 访问sogou的首页
  17. self.driver.get(url)
  18. try:
  19. # 找到搜狗首页中的搜索输入框页面元素
  20. searchBox = self.driver.find_element_by_id("query")
  21. # 在搜索输入框中输入“光荣之路”
  22. searchBox.send_keys(u"光荣之路")
  23. # 等待2秒,以便悬浮框加载完成
  24. time.sleep(2)
  25. # 查找内容包含“篮球电影”的悬浮选项
  26. suggetion_option = self.driver.\
  27. find_element_by_xpath("//ul/li[contains(., '电影')]")
  28. # 点击找到的选项
  29. suggetion_option.click()
  30. time.sleep(3)
  31. except NoSuchElementException, e:
  32. # 打印异常堆栈信息
  33. print traceback.print_exc()
  34.  
  35. def tearDown(self):
  36. # 退出IE浏览器
  37. self.driver.quit()
  38.  
  39. if __name__ == '__main__':
  40. unittest.main()

方法三:通过模拟键盘下箭头进行选择悬浮窗选项,代码如下:

  1. #encoding=utf-8
  2. from selenium import webdriver
  3. from selenium.webdriver.common.keys import Keys
  4. import unittest
  5. import time
  6.  
  7. class TestDemo(unittest.TestCase):
  8.  
  9. def setUp(self):
  10. # 启动Chrome浏览器
  11. self.driver = webdriver.Ie(executable_path = "e:\\IEDriverServer")
  12.  
  13. def test_AjaxDivOptionByKeys(self):
  14. url = "http://www.sogou.com/"
  15. # 访问sogou的首页
  16. self.driver.get(url)
  17. # 找到搜狗首页中的搜索输入框页面元素
  18. searchBox = self.driver.find_element_by_id("query")
  19. # 在搜索输入框中输入“光荣之路”
  20. searchBox.send_keys(u"光荣之路")
  21. # 等待2秒,以便悬浮框加载完成
  22. time.sleep(2)
  23. for i in range(3):
  24. # 选择悬浮框中中第几个联想关键词选项就循环几次
  25. # 模拟键盘点击下箭头
  26. searchBox.send_keys(Keys.DOWN)
  27. time.sleep(0.5)
  28. # 当按下箭头到想要选择的选项后,再模拟键盘点击回车键,选中该选项
  29. searchBox.send_keys(Keys.ENTER)
  30. time.sleep(3)
  31.  
  32. def tearDown(self):
  33. # 退出IE浏览器
  34. self.driver.quit()
  35.  
  36. if __name__ == '__main__':
  37. unittest.main()

webdriver高级应用- 在ajax方式产生的浮动框中,单击选择包含某个关键字的选项的更多相关文章

  1. Python3 Selenium自动化web测试 ==> 第七节 WebDriver高级应用 -- 浮动框中,单击选择某个关键字选项

    学习目的: 了解WebDriver的高级应用 正式步骤: 测试Python3代码 # -*- coding:utf-8 -*- from selenium import webdriver from ...

  2. Selenium WebDriver高级应用

    WebDriver高级应用 public class Demo4 { WebDriver driver; // @BeforeMethod:在每个测试方法开始运行前执行 @BeforeMethod p ...

  3. WebDriver高级应用实例(1)

    1.1使用JavaScriptExecutor单击元素 被测网页的网址: http://www.baidu.com Java语言版本的API实例代码 import org.testng.annotat ...

  4. selenium处理Ajax浮动框方法

    package com.allin.pc;import java.util.List;import org.openqa.selenium.WebElement;import org.openqa.s ...

  5. Selenium+java - Ajax浮动框处理

    Ajax浮动框 我们常遇到的某些网站首页输入框,点击后显示的浮动下拉热点,如下图: 实际案例 模拟场景如下: hao123首页搜索输入框,单击搜索框,点击浮动框中的哪吒票房破30亿,单击后选项的文字内 ...

  6. ASP.NET MVC5高级编程 之 Ajax

    jQuery不仅支持所有现代浏览器,包括IE.Firefox.Safari.Opera和Chrome等,还可以在编写代码和浏览器API冲突时隐藏不一致性(和错误). 1. jQuery jQuery擅 ...

  7. Selenium WebDriver高级用法

    Selenium GitHub地址 选择合适的WebDrvier WebDriver是一个接口,它有几种实现,分别是HtmlUnitDrvier.FirefoxDriver.InternetExplo ...

  8. Webdriver处理页面元素的方式

    Webdriver执行JavaScript代码的方式 WebDriver driver = new ChromeDriver(); JavascriptExecutor jse = (Javascri ...

  9. Ajax方式上传文件

    用到两个对象 第一个对象:FormData 第二个对象:XMLHttpRequest 目前新版的Firefox 与 Chrome 等支持HTML5的浏览器完美的支持这两个对象,但IE9尚未支持 For ...

随机推荐

  1. [拾零]C/C++_代码复用的实现_静态链接库_动态链接库_使用.def导出

    1 静态链接库 1.1 创建静态链接库: 1.在VC6中创建项目:Win32 Static Library 2.在项目中创建两个文件:xxx.h 和 xxx.cpp 3.编译 1.2 使用静态链接库 ...

  2. Vmware Player 比较

    .wiz-todo, .wiz-todo-img {width: 16px; height: 16px; cursor: default; padding: 0 10px 0 2px; vertica ...

  3. 数据库操作----找了MySQL和SQL Sever两个的基础语句

    这是MySQL的基本操作: 1 登入数据库:mysql -uroot -p+密码 (SQL Sever登入: osql -U 用户名 -P 密码) 显示已存在的数据库:show databases; ...

  4. python读xml文件

    # -*- coding:utf-8 -*- import jsonimport requestsimport os curpath=os.path.dirname(os.path.realpath( ...

  5. allure使用简介

    #安装依赖包pip install requests_toolbeltpip install pyyamlpip install pytest-allure-adaptor #安装allure2 说明 ...

  6. SQL server的一个分割表值函数

    CREATE FUNCTION [dbo].[Fn_Split] ( @SplitString text, -- 如果要传入NText类型,下面需要相应的修改,注释行为NText下同 ) = ','- ...

  7. 问题驱动的Git学习

    (搬运自我在SegmentFault的博客) 本人是个Git新手,平时用Git最多的就是push,因为别的都不怎么会用.这几天因为在小组中负责代码的整合,顺便将代码提交到Github,接触到了Git更 ...

  8. Problem Q: C语言习题 计算该日在本年中是第几天

    Problem Q: C语言习题 计算该日在本年中是第几天 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 4572  Solved: 2474[Subm ...

  9. c++ json字符串转换成map管理

    在cocos2dx for lua中,我们经常通过lua的table传入c++使用,然后早c++层操作数据. 实现步骤大致如下: table->string->c++层->通过rap ...

  10. GCD之dispatch queue

    GCD之dispatch queue iOS中多线程编程工具主要有: NSThread NSOperation GCD 这三种方法都简单易用,各有千秋.但无疑GCD是最有诱惑力的,因为其本身是appl ...