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. Python开发 基础篇

    2019-02-01 产生验证码: 用户输入的值和显示的值相同时显示Correct,否则继续生成随机验证码等待用户输入 def check_code(): import random checkcod ...

  2. oracle drop 表后 恢复

    1.查看回收站中表 select object_name,original_name,partition_name,type,ts_name,createtime,droptime from recy ...

  3. pytorch使用总结

    loss的获取 在看别人代码的时候发现都是 loss=net.loss train_loss+=loss.data[0]#train_loss用于累加梯度 在想为什么不直接使用loss呢,因为pyto ...

  4. springboot killed springboot 无故停止运行解决办法

    测试环境的服务部署在阿里云服务器上,运行一段时间总是自动宕掉,在配置文件里加上内存溢出配置,也不能打印出相关日志,一直找不出原因.今天在网上:http://www.cnblogs.com/chener ...

  5. 修改 input / textarea placeholder 属性的颜色和字体大小

    话不多说,直接上代码: input::-webkit-input-placeholder, textarea::-webkit-input-placeholder { color: #666; fon ...

  6. 深深感受 Promise.all 带来的速度提升

    什么是Promise Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大.(摘抄自 阮一峰老师的 ECMAScript 6 入门).具体请查看阮一峰老师的这 ...

  7. RabbitMQ安装笔记

    前言 项目中某些场景考虑到高并发情况,调研后决定使用RabbitMQ,本来以为很简单,没想到配置环境花费了好多时间,按照网上的方法来,总是有其他问题需要继续查找,特记录此笔记,方便下次部署安装. 本笔 ...

  8. javascript设计模式阅读后的感悟与总结

    单例模式 用于创建唯一的一个对象. 核心在于一个判断 var index if(index){ return index; } init(); 这样只会在第一次的时候初始化创建对象,以后都不会再创建对 ...

  9. Linux根据名字搜索

    find / -name mysql

  10. java运行时内存分配详解

    一. 基本概念 每运行一个java程序会产生一个java进程,每个java进程可能包含一个或者多个线程,每一个Java进程对应唯一一个JVM实例,每一个JVM实例唯一对应一个堆,每一个线程有一个自己私 ...