代码如下:
1 #导包 2 from selenium import webdriver 3 from time import sleep 4 driver=webdriver.Chrome() 5 url="https://192.168.21.150/" 6 driver.implicitly_wait(10) 7 #通过url打开事务所页面 8 driver.get(url) 9 driver.maximize_window() 10 #获取当前事务所窗口句柄 11 first_handle=driver.current_window_handle 12 #通过js打开js_one事务所页面 13 sleep(3) 14 js_one='window.open("https://192.168.21.150/");' 15 driver.execute_script(js_one) 16 #通过js打开js_two事务所页面 17 sleep(1) 18 js_two='window.open("https://192.168.21.150/");' 19 driver.execute_script(js_two) 20 #获取所有窗口句柄集合 21 handles=driver.window_handles 22 #打印所有窗口句柄集合 23 print(handles) 24 25 #切换到js_two窗口,并进行kp操作 26 for handle in handles: 27 if handle!=first_handle: 28 driver.switch_to.window(handle) 29 print(driver.current_window_handle) #打印js_two窗口句柄 30 sleep(1) 31 #进行kp操作,代码如下: 32 #选择用户名框,输入用户名cskczy 33 driver.find_element_by_xpath('//input[@name="userid"]').send_keys("cskczy") 34 #选择密码框,输入密码88888888 35 driver.find_element_by_xpath('//input[@name="password"]').send_keys("88888888") 36 #点击登录按钮 37 driver.find_element_by_xpath('//button[@class="login-btn"]').click() 38 #关闭事务所申报和修改密码的窗口 39 sleep(2) 40 driver.find_element_by_xpath('//*[@id="layui-layer2"]/div[3]/a[1]').click() 41 sleep(1) 42 driver.find_element_by_xpath("//*[@id='layui-layer1']/span[1]").click() 43 # 点击左边票据管理按钮 44 driver.find_element_by_xpath('//ul[@class="layui-nav layui-nav-tree"]/li[3]').click() 45 # 点击票据管理层级下的单据管理按钮 46 driver.find_element_by_xpath('//a[@data-url="/home/bill/ndjgl.html"]').click() 47 # 停顿1秒,进入iframe页面 48 sleep(1) 49 # iframe=driver.find_element_by_xpath('//*[@id="top_tabs_box"]/div/div[3]/iframe') 50 driver.switch_to.frame(driver.find_element_by_xpath('//iframe[contains(@src,"/home/bill/ndjgl")]')) 51 # 停顿1秒,点击iframe页面中的新增按钮 52 sleep(1) 53 driver.find_element_by_xpath('//*[@class="layui-btn-group"]/button/i').click() 54 ''' 55 退出到外面,再进第二个iframe 56 #driver.switch_to.default_content() 57 #切到第一个iframe 58 #sleep(1) 59 #driver.switch_to.frame(driver.find_element_by_xpath('//iframe[contains(@src,"/home/bill/ndjgl")]')) 60 #切到第二个iframe 61 ''' 62 # 此时本来就在第二个iframe里面,所以只要再切入一层即可。 63 sleep(1) 64 driver.switch_to.frame(driver.find_element_by_xpath('//iframe[contains(@src,"djdr-add")]')) 65 # 点击销方名称右边的按钮 66 sleep(1) 67 driver.find_element_by_xpath( 68 '//*[@id="lzkp-box"]/tbody/tr/td[2]/table/tbody/tr[1]/td/table/tfoot/tr[1]/td[1]/i').click() 69 # 获取销方信息的弹窗,从最外面切进去3层iframe 70 driver.switch_to.default_content() 71 driver.switch_to.frame(driver.find_element_by_xpath('//iframe[contains(@src,"/home/bill/ndjgl")]')) 72 sleep(1) 73 driver.switch_to.frame(driver.find_element_by_xpath('//iframe[contains(@src,"djdr-add")]')) 74 sleep(1) 75 driver.switch_to.frame(driver.find_element_by_xpath('//iframe[contains(@src,"xfxx")]')) 76 # 在销方信息弹窗的文本框输入"051" 77 driver.find_element_by_xpath('//*[@id="name"]').send_keys("051") 78 # 点击查询按钮,找到简码为TEST的企业 79 sleep(1) 80 driver.find_element_by_xpath('//button[@class="layui-btn search"]').click() 81 # 点击简码为051的企业税号 82 sleep(1) 83 driver.find_element_by_xpath('//*[@class="layui-table"]/tbody/tr[1]/td[2]').click() 84 # 回退到发票填开界面,也就是销方信息弹窗的上一个iframe页面 85 # 这里有两种方法切入:1.从最外面切入两层进去;2.从销方信息的iframe回退上去到发票填开的iframe 86 driver.switch_to.parent_frame() 87 # 回到发票填开页面后,点击购方名称最右边的按钮 88 sleep(1) 89 driver.find_element_by_xpath( 90 '//*[@id="lzkp-box"]/tbody/tr/td[2]/table/tbody/tr[1]/td/table/thead/tr[1]/td[1]/i').click() 91 # 此时弹出购方信息的窗口iframe 92 # 我们本来就在发票填开的第二个iframe,只需要再切入一层即可。 93 driver.switch_to.frame(driver.find_element_by_xpath('//iframe[contains(@src,"gfxx")]')) 94 # 切入到购房信息的iframe后,选择输入框,输入客户名称:王昭君 95 sleep(1) 96 driver.find_element_by_xpath('//*[@id="name"]').send_keys("王昭君") 97 # 点击查询按钮,搜索到客户名称为王昭君的企业 98 driver.find_element_by_xpath('//button[@class="layui-btn search"]').click() 99 # 点击客户税号为91330200513697175C的企业 100 sleep(1) 101 driver.find_element_by_xpath('//*[@class="layui-table"]/tbody/tr[1]/td[2]').click() 102 # 又回到了发票填开界面,也就是第二个iframe页面,所以要从购方名称弹窗iframe回退 103 driver.switch_to.parent_frame() 104 # 这样就回退到开票页面的iframe,可以直接操作页面上的元素了,点击操作列:货物或应税劳务、服务名称右边的按钮 105 sleep(1) 106 driver.find_element_by_xpath('//*[@id="tr0"]/td[1]/i').click() 107 # 此时弹出了商品信息窗口,又是一层iframe,需要从开票信息第二层的iframe切进去 108 sleep(1) 109 driver.switch_to.frame(driver.find_element_by_xpath('//iframe[contains(@src,"goods")]')) 110 # 切入商品信息iframe后,在商品名称框输入:11号慢羊羊 111 driver.find_element_by_xpath('//*[@id="name"]').send_keys("11号慢羊羊") 112 # 点击查询按钮,搜索到商品名称为11号慢羊羊的商品 113 driver.find_element_by_xpath('//button[@class="layui-btn search"]').click() 114 # 帅选出这条商品后,点击它的税收分类编码确定这条商品 115 sleep(1) 116 driver.find_element_by_xpath('//*[@class="layui-table"]/tbody/tr/td[2]/div').click() 117 # 退回到开票页面的iframe,在备注栏输入:哈哈哈,就是这么强大! 118 driver.switch_to.parent_frame() 119 sleep(1) 120 driver.find_element_by_xpath('//*[@id="bz"]').send_keys("人生苦短,我用Python!") 121 # 选择数量框输入:10 122 driver.find_element_by_xpath('//*[@id="spsl_0"]').send_keys("10") 123 # 点击金额(含税)框 124 driver.find_element_by_xpath('//*[@id="je_0"]').click() 125 # 点击开票按钮 126 driver.find_element_by_xpath('//*[@class="layui-inline pull-right"]/button[7]').click() 127 sleep(3) 128 break 129 driver.close() #关闭当前窗口(js_two) 130 131 #此时还剩两个窗口,倒着获取js_one的窗口句柄 132 for handle in handles: 133 if handle!=first_handle: 134 driver.switch_to.window(handles[-1]) #剩2个句柄,取最后一个 135 print(driver.current_window_handle) #输出当前句柄(js_one) 136 #进行khxz操作,代码如下: 137 sleep(1) 138 # 选择用户名框,输入用户名cskczy 139 driver.find_element_by_xpath('//input[@name="userid"]').send_keys("cskczy") 140 # 选择密码框,输入密码88888888 141 driver.find_element_by_xpath('//input[@name="password"]').send_keys("88888888") 142 # 点击登录按钮 143 driver.find_element_by_xpath('//button[@class="login-btn"]').click() 144 # 登录后等待1秒,关闭事务所申报和修改密码的弹窗。 145 sleep(2) 146 driver.find_element_by_xpath('//*[@id="layui-layer2"]/div[3]/a[1]').click() 147 sleep(1) 148 driver.find_element_by_xpath("//*[@id='layui-layer1']/span[1]").click() 149 # 点击左边导航栏的基础管理 150 driver.find_element_by_xpath('//ul[@class="layui-nav layui-nav-tree"]/li[2]').click() 151 # 点击基础管理里面的客户管理 152 driver.find_element_by_xpath('//ul[@class="layui-nav layui-nav-tree"]/li[2]/dl/dd[3]/a/cite').click() 153 # 整体思路:点击新增按钮,但需要进到表单iframe1 src="/home/sys/khgl/khxx.html" 操作元素 154 iframe1 = driver.find_element_by_xpath('//iframe[contains(@src,"/home/sys/khgl/khxx.html")]') 155 driver.switch_to.frame(iframe1) # 成功进入到iframe1 156 # 在iframe1操作新增按钮 157 driver.find_element_by_xpath('//*[@class="layui-form m-form"]/div[3]/button[1]/i').click() 158 sleep(1) # 等待1秒加载"选择企业税号"的弹窗 159 driver.switch_to.default_content() # f返回主文档 160 # 获取"选择企业税号"的弹窗定义为iframe2 161 iframe2 = driver.find_element_by_xpath('//*[@id="layui-layer-iframe3"]') 162 # 进入到iframe2窗口,操作表单上的元素 163 driver.switch_to.frame(iframe2) 164 sleep(1) # 等待1秒 165 # 选择企业税号框,并输入330203999999051 166 driver.find_element_by_xpath('//*[@id="qysh"]').send_keys("330203999999051") 167 driver.find_element_by_xpath('//*[@class="layui-inline"]/button[1]').click() # 点击查询按钮 168 # 勾选税号为330203999999051的企业 169 driver.find_element_by_xpath('//*[@class="layui-table"]/tbody/tr/td[1]/div/div/i').click() 170 driver.find_element_by_xpath('//*[@class="layui-inline"]/button[2]').click() # 点击确定按钮 171 driver.switch_to.default_content() # 返回到主文档 172 # 进入到iframe1表单操作新增按钮 173 driver.switch_to.frame(iframe1) 174 driver.find_element_by_xpath('//*[@class="layui-form m-form"]/div[3]/button[1]/i').click() # 点击新增按钮 175 driver.switch_to.default_content() # 返回到主文档 176 # 获取"新增客户信息"的弹窗定义为iframe3 177 sleep(1) 178 iframe3 = driver.find_element_by_xpath('//*[@id="layui-layer-iframe4"]') 179 # 进入到iframe3窗口,操作表单上的元素 180 driver.switch_to.frame(iframe3) 181 sleep(1) # 等待1秒 182 # 新增客户,维护必填项 183 driver.find_element_by_xpath('//*[@id="name"]').send_keys("宁波技冠智能科技发展股份有限公司") # 输入客户名称 184 driver.find_element_by_xpath('//*[@id="customer_sh"]').send_keys("91330200573697175C") # 输入客户税号 185 driver.find_element_by_xpath('//*[@id="short_code"]').send_keys("121212121C") # 输入客户简码 186 driver.find_element_by_xpath('//*[@id="email"]').send_keys('123456789@qq.com') # 输入电子邮箱 187 driver.find_element_by_xpath('//*[@class="layui-form-item opt-margin-bottom"]/div/div/textarea').send_keys( 188 "人生苦短,我用Python") # 输入备注 189 driver.find_element_by_xpath('//*[@class="layui-form layui-form-pane"]/div[5]/button').click() # 点击"添加行"按钮 190 sleep(1) # 等待1秒 191 driver.find_element_by_xpath( 192 '//*[@class="layui-table-body layui-table-main"]/table/tbody/tr/td[1]/div').click() # 点击"地址及电话输入框" 193 sleep(1) # 等待1秒 194 driver.find_element_by_xpath( 195 '//*[@class="layui-table-body layui-table-main"]/table/tbody/tr/td[1]/input').send_keys( 196 "宁波研发园88887777") # 输入地址及电话 197 driver.find_element_by_xpath('//*[@class="layui-table-body layui-table-main"]/table/tbody/tr/td[2]/div').click() 198 sleep(1) # 等待1秒 199 driver.find_element_by_xpath( 200 '//*[@class="layui-table-body layui-table-main"]/table/tbody/tr/td[2]/input').send_keys( 201 "中国银行6228480310540239011") # 输入开户行及账号 202 driver.find_element_by_xpath( 203 '//*[@class="layui-table-box"]/div[2]/table/tbody/tr/td[4]/div/a[2]').click() # 点击"设为默认"按钮 204 sleep(1) # 等待1秒 205 driver.find_element_by_xpath('//*[@class="layui-form layui-form-pane"]/div[7]/div/button[1]').click() # 点击保存按钮 206 # 获取弹窗信息的确定按钮 207 driver.switch_to.default_content() # 返回主文档 208 sleep(2) # 等待2秒 209 #driver.find_element_by_xpath('//*[@id="layui-layer6"]/div[3]/a').click() # 提示:保存成功,点击"确定"按钮 210 #sleep(1) 211 # 至此事务所一体化客户新增的脚本完成 212 break 213 driver.close() #关闭当前窗口(js_one) 214 215 #还剩下一个窗口,获取句柄(first_handle)并进行spxz操作,代码如下: 216 driver.switch_to.window(first_handle) 217 sleep(1) 218 #选择用户名框,输入用户名cskczy 219 driver.find_element_by_xpath('//input[@name="userid"]').send_keys("cskczy") 220 #选择密码框,输入密码88888888 221 driver.find_element_by_xpath('//input[@name="password"]').send_keys("88888888") 222 #点击登录按钮 223 driver.find_element_by_xpath('//button[@class="login-btn"]').click() 224 #登录后等待1秒,关闭事务所申报和修改密码的窗口 225 sleep(2) 226 driver.find_element_by_xpath('//*[@id="layui-layer2"]/div[3]/a[1]').click() 227 sleep(1) 228 driver.find_element_by_xpath("//*[@id='layui-layer1']/span[1]").click() 229 #点击左边导航栏的基础管理 230 driver.find_element_by_xpath('//ul[@class="layui-nav layui-nav-tree"]/li[2]').click() 231 #点击基础管理里面的商品管理 232 driver.find_element_by_xpath('//ul[@class="layui-nav layui-nav-tree"]/li[2]/dl/dd[4]/a').click() 233 #整体思路:点击新增按钮,但需要进到表单iframe1 src="/home/sys/goods/goods.html" 操作元素 234 iframe1=driver.find_element_by_xpath('//iframe[contains(@src,"/home/sys/goods/goods.html")]') 235 driver.switch_to.frame(iframe1) #成功进到iframe1 236 #在iframe1操作新增按钮 237 driver.find_element_by_xpath('//*[@class="layui-form m-form"]/div[3]/button[1]/i').click() 238 sleep(1) #等待1秒加载"选择企业税号"的弹窗 239 driver.switch_to.default_content() #返回主文档 240 # 获取"选择企业税号"的弹窗定义为iframe2 241 iframe2=driver.find_element_by_xpath('//*[@id="layui-layer-iframe3"]') 242 #进入到iframe2窗口,操作表单上的元素 243 driver.switch_to.frame(iframe2) 244 sleep(1) #等待1秒 245 #选择企业税号框,并输入330203999999051 246 driver.find_element_by_xpath('//*[@id="qysh"]').send_keys("330203999999051") 247 driver.find_element_by_xpath('//*[@class="layui-inline"]/button[1]').click() #点击查询按钮 248 #勾选税号为330203999999051的企业 249 driver.find_element_by_xpath('//*[@class="layui-table"]/tbody/tr/td[1]/div/div/i').click() 250 driver.find_element_by_xpath('//*[@class="layui-inline"]/button[2]').click() #点击确定按钮 251 driver.switch_to.default_content() #返回到主文档 252 #进入到iframe1表单操作新增按钮 253 driver.switch_to.frame(iframe1) 254 driver.find_element_by_xpath('//*[@class="layui-form m-form"]/div[3]/button[1]/i').click() #点击新增按钮 255 driver.switch_to.default_content() #返回到主文档 256 #获取"新增商品信息"的弹窗定义为iframe3 257 iframe3=driver.find_element_by_xpath('//*[@id="layui-layer-iframe4"]') 258 #进入到iframe3窗口,操作表单上的元素 259 driver.switch_to.frame(iframe3) 260 sleep(1) #等待1秒 261 #新增商品,维护必填项 262 driver.find_element_by_xpath('//*[@id="name"]').send_keys("spmc") #输入商品名称 263 driver.find_element_by_xpath('//*[@id="ggxh"]').send_keys("ggxh") #输入规格型号 264 driver.find_element_by_xpath('//*[@id="jldw"]').send_keys("jldw") #输入计量单位 265 driver.find_element_by_xpath('//*[@id="dj"]').send_keys("10") #输入商品单价 266 #选择税收分类编码的过程 267 driver.find_element_by_xpath('//*[@id="ssflbm"]').click() #点击税收分类编码输入框 268 driver.switch_to.default_content() #返回主文档 269 #获取"税收分类编码"的弹窗定义为iframe4 270 iframe4=driver.find_element_by_xpath('//*[@id="layui-layer-iframe5"]') 271 #进入到iframe4窗口,操作表单上的元素 272 driver.switch_to.frame(iframe4) 273 #在名称框输入:小麦 274 driver.find_element_by_xpath('//*[@id="spmc"]').send_keys("小麦") 275 driver.find_element_by_xpath('//*[@class="layui-form"]/div/div/button[1]').click() #点击查询按钮 276 #勾选名称为小麦的这条税收分类编码 277 driver.find_element_by_xpath('//*[@class="layui-form layui-border-box layui-table-view"]/div[1]/div[2]/table/tbody/tr[1]/td[1]/div/div/i').click() 278 driver.find_element_by_xpath('//*[@class="layui-form"]/div/div/button[2]').click() #点击确定按钮 279 #退出表单iframe4,回到上一级表单iframe3 280 driver.switch_to.parent_frame() 281 driver.switch_to.frame(iframe3) #进入到iframe3"新增商品信息"的表单 282 #选择优惠政策类型为"免税" 283 sleep(1) #等待1秒 284 driver.find_element_by_xpath('//*[@class="layui-form layui-form-pane"]/div[5]/div[2]/div/div/div/input').click() #点击"优惠政策类型"弹出下来框 285 sleep(1) #等待1秒 286 driver.find_element_by_xpath('//*[@class="layui-form layui-form-pane"]/div[5]/div[2]/div/div/dl/dd[2]').click() #选择"免税" 287 driver.find_element_by_xpath('//*[@id="short_code"]').send_keys("spjm") #输入商品简码 288 driver.find_element_by_xpath('//*[@class="layui-form-item"]/div/button[1]').click() #点击保存按钮 289 driver.switch_to.default_content() #返回主文档 290 sleep(1) #等待1秒 291 driver.find_element_by_xpath('//*[@id="layui-layer7"]/div[3]/a').click() #点击弹窗上的"保存"按钮 292 #至此事务所一体化商品新增的脚本完成 293 sleep(3) 294 driver.quit() #关闭并退出浏览器