from selenium import webdriver
import unittest,time,re
from selenium.webdriver.common.keys import Keys '''
元交网登录退出
''' username=''
password='' class Untitled(unittest.TestCase):
def setUp(self):
# 打开网址
self.driver=webdriver.Firefox()
self.driver.implicitly_wait(10)
self.url="https://ca.cecb2b.com/login"
self.driver.maximize_window() def shop_buy(self):
driver=self.driver
driver.get(self.url)
# 登录
driver.find_element_by_xpath("//input[@id='username']").clear()
driver.find_element_by_xpath("//input[@id='username']").send_keys(username)
self.driver.implicitly_wait(10)
driver.find_element_by_xpath("//input[@class='text_inps1 text_inps2']").send_keys(password)
driver.find_element_by_xpath("//input[@type='submit']").click()
driver.find_element_by_xpath("//a[contains(text(),'元器件交易网-全球领先电子配套平台')]").click() #元交网首页 now_handle=driver.current_window_handle #获取当前窗口句柄
print("----now handle id first is %s"%now_handle) # 购买某产品
driver.find_element_by_xpath("//*[@class='buy-now']").find_element_by_link_text('立即购买').click()
# driver.implicitly_wait(10)
time.sleep(2) all_handles = self.driver.window_handles #获取所有窗口的句柄
# 将所有窗口id遍历一遍,将最新的写入到txt中
filename='write_data.txt'
with open(filename, 'w') as f:
for i in range(len(all_handles)):
f.write(str(all_handles[i]+"\n")) time.sleep(2) #增加延迟,以确保浏览器响应
# print("---新页面id is %s 旧页面id is %s"%(all_handles[1],now_handle)) # 进入购物车
driver.switch_to_window(all_handles[-1])
time.sleep(1)
driver.find_element_by_xpath("//div[@class='gauge']/a[1]").click()
time.sleep(1)
# print(now_handle) # 进入结算
time.sleep(2)
self.driver.find_element_by_xpath("//input[@id='inlandAllTop']").click() # 复选框checkbox
time.sleep(2)
self.driver.find_element_by_xpath("//div[@class='company-list']/input[1]").send_keys(Keys.SPACE) #选择第一个checkbox
if driver.find_element_by_xpath("//div[@class='company-list']/input[1]").is_selected():
print('selected!')
else:
print('not yet!')
time.sleep(1)
self.driver.find_element_by_xpath("//a[@class='accounts']").click()
time.sleep(2) self.driver.find_element_by_link_text("提交订单").click()
time.sleep(2)
self.driver.find_element_by_link_text("国内交货支付").click() def tearDown(self):
self.driver.quit() if __name__ == '__main__':
unittest.main()

selenium多窗口切换定位的更多相关文章

  1. Python3 Selenium多窗口切换

    Python3 Selenium多窗口切换 以腾讯网(http://www.qq.com/)为例,打开腾讯网,点击新闻,打开腾讯新闻,点击新闻中第一个新闻链接. 在WebDriver中封装了获取当前窗 ...

  2. Python+Selenium学习--窗口切换及操作元素

    场景 有时候我们在测试一个web 应用时会出现多个浏览器窗口的情况,在selenium1.0 中这个问题比较难处理.webdriver 提供了相关相方法可以很轻松的在多个窗口之间切换并操作不同窗口上的 ...

  3. selenium webdriver窗口切换(上)

    selenium webdriver窗口切换,有时候在做自动化的时候需要打开很多很多的页面, 当在操作不同的页面的时候需要切换窗口,下面是如何切换到前后页面窗口的操作: package test201 ...

  4. python3 + selenium 之窗口切换

    窗口切换 此代码来源学习后对淘宝操作实践记录: 以下代码在Chrome61和IE11上正常运行,Firefox5.7上运行存在一些问题须改进,应该是火狐不兼容差link_text部分和循环经常报错,在 ...

  5. selenium webdriver窗口切换(下)

    多窗口切换有时候需要在不同的窗口切换,从而操作不同的窗口上的元素.在selenium1.0 中这个问题比较难处理.但WebDriver 提供了switcTo.window()方法可以切换到任意的窗口. ...

  6. Selenium 多窗口切换

    我们在操作网页的时候,点击有些页面的链接,会重新打开一个窗口,我们要在新页面上操作,就得切换窗口 比如在百度首页的登录框点击注册,会重新打开一个注册的新页面,要在新页面注册,就得先切进新页面 那我们怎 ...

  7. Selenium 多窗口元素定位处理

    以下文章来自于  上海-悠悠的博客 <Selenium2+python自动化13-多窗口.句柄(handle)> 有些页面的链接打开后,会重新打开一个窗口,对于这种情况,想在新页面上操作, ...

  8. selenium 多窗口切换(windows)

    在web应用中,常常会遇见点击某个链接会弹出一个新的窗口,或者是相互关联的web应用 ,这样要去操作新窗口中的元素,这时就需要主机切换到新窗口进行操作..WebDriver 提供了switchTo() ...

  9. python之selenium多窗口切换

    前提: 在页面操作过程中有时候点击某个链接会弹出新的窗口,这就需要主机切换到新打开的窗口上.WebDriver提供了switch_to.window()方法,可以实现在不同的窗口之间切换. 内容: 以 ...

随机推荐

  1. Git Learning3 Eclipse Tools(未完成)

    1.创建Git 操作:工程 右键 Team Share Project Git 完成创建 2.全局设置:Window->Preference->Git->Configuration- ...

  2. PowerDesigner设置Oracle不区分大小写

    一. powerdesigner设置当前数据库 打开powerdesigner,然后选择菜单DatabaseChange current DBMS,如图: 修改这个下拉框的值即可. 二. power ...

  3. springboot缓存注解——@Cacheable

    @Cacheable: 1,方法运行之前,先查询Cache(缓存组件),按照cacheName指定的名字获取(CacheManager获取相应缓存) 第一次获取缓存如果没有Cache组件会自会自动创建 ...

  4. 一款好用的JS时间日期插件layDate

    觉得这个插件很不错,使用起来也很方便,推荐使用 1.插件截图 2.插件配置 选择很多,配置也很简单,插件官网:https://www.layui.com/laydate/配置说得很明确,基本操作就是: ...

  5. SYN-flood攻击

    原理:当TCP三次握手进行第一次握手时,客户端向服务端发送SYN请求报文,第二次握手服务端会返回一个SYN+ACK的一个确认报文,syn-flood攻击就发生在第三次握手,当客户端不去回应服务端的SY ...

  6. Educational Codeforces Round 41 (Rated for Div. 2)F. k-substrings

    题意比较麻烦略 题解:枚举前缀的中点,二分最远能扩展的地方,lcp来check,然后线段树维护每个点最远被覆盖的地方,然后查询线段树即可 //#pragma GCC optimize(2) //#pr ...

  7. BootStrap 学习笔记一

    1.bootstrap列偏移 列偏移是指在网格系统中,可以使用偏移列来达到让某列右移的效果,只需要在class的“col-*-*”后追加“col-*-offset-*” <div class=& ...

  8. sqlserver isnull函数

    isnull(参数1,参数2),判断参数1是否为NULL,如果是,返回参数2,否则返回参数1. select ISNULL(null,'helloword') 返回helloword字符串select ...

  9. 记一次Debug过程

    刚刚加入新公司,就迎来第一场战斗,微服务拉入拉出测试. 简单的说,对于接入eureka 和 vi(携程开源的) 应用,在使用发布系统进行发布的时候,会经过这么一个流程   UP —— STARTING ...

  10. EXCE 表格导入导出遇到问题(easypoi)

    使用Easypoi进行excel表格的导入导出遇到的问题: 1.导出时候打开文件一直遇乱码,主要的原因就是我在实体类没有进行给每个字段进行注解,就会导致每个字段找不到对应的汉字表头,所以一定不要忘了导 ...