https://www.cnblogs.com/xiamaojjie/p/11396471.html 关于SELENIUM自动化对IFRAME内嵌元素的处理
import time
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
driver=webdriver.Chrome(r"C:/Python37-32/chromedriver.exe")
driver.get("https://www.etax-gd.gov.cn/xxmh/html/index_origin.html?gopage=true&m1=gzcx&m2=&fromWhere=&qxkzsx=0&tabTitle=null&cdId=dlqcd-1&gnDm=gndm-dlqcd-1")
time.sleep(1)
driver.find_element_by_partial_link_text("发票查询").click()
iframe = driver.find_element_by_xpath("//*[@id='ifrMain']")
# todo switch_to.frame进入到iframe里面去
driver.switch_to.frame(iframe)
driver.find_element_by_xpath('//*[@id="fpdm"]').send_keys("044001615111")
driver.find_element_by_xpath('//*[@id="fphm"]').send_keys("36758439")
driver.find_element_by_xpath('//*[@id="nsrsbh"]').send_keys("91440705MA520MH30X")
driver.find_element_by_xpath('//*[@id="hjjexx"]').send_keys("324")
#driver.find_element_by_xpath('//*[@id="nc_1__scale_text"]/span')
time.sleep(1)
#ActionChains(driver).drag_and_drop_by_offset(driver.find_element_by_xpath('//*[@id="nc_1__scale_text"]'),xoffset=300, yoffset=0).perform()
div1=driver.find_element_by_xpath('//*[@id="nc_1__scale_text"]')
#ActionChains(driver).click_and_hold(div1) #点击鼠标左键,按住不放
#move_by_offset(xoffset, yoffset) #鼠标移动到距离当前位置(x,y)
#release(div1) #在某个元素位置松开鼠标左键
ActionChains(driver).click_and_hold(div1).move_by_offset(xoffset=300, yoffset=0).release(div1).perform()
driver.find_element_by_xpath('//*[@id="spfsbh"]').send_keys("91440700792865P")
driver.find_element_by_xpath('//*[@id="spfmc"]').send_keys("有限公司营业部")
driver.find_element_by_xpath('//*[@id="spje"]').send_keys("306.13")
driver.find_element_by_xpath('//*[@id="se"]').send_keys("18.37")
driver.find_element_by_xpath('//*[@id="kprq"]').send_keys("2020-02-12")
driver.find_element_by_xpath('//*[@id="kprq"]').click()
#driver.find_element_by_xpath('//*[@id="CxBtn"]').click()
自动化某网页,这里使用的是ie浏览器,这个只需要找到跟自己安装selenium一致的 IEDriverServer.exe就行了。 ie的安全性要选择一致(要么全部启用安全,要么全部去掉启用)
"""
ie9
python3.7.2
internet 选项,进入安全标签,分别点击internet ,本地intranet,受信任的站点,受限制的站点,
四个设置,全部去掉勾选“启用保护模式” 或者全部勾选“启用保护模式”,即保持这四个设置一致,要么全部勾选,要么全部去掉勾选,就可以启动ie浏览器了
"""
import time
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from selenium.webdriver.common.action_chains import ActionChains
#create capabilities
capabilities = DesiredCapabilities.INTERNETEXPLORER
#delete platform and version keys
capabilities.pop("platform", None)
capabilities.pop("version", None)
DesiredCapabilities.INTERNETEXPLORER['ignoreProtectedModeSettings'] = True
#start an instance of IE
driver = webdriver.Ie(executable_path="F:\\python_project\\webs\\IEDriverServer.exe", capabilities=capabilities)
driver.get("http://192.101.1.46:8008/")
#driver.find_element_by_xpath('//*[@id="username"]').send_keys("24037")
driver.find_element_by_xpath('//*[@id="password"]').send_keys("123321")
driver.find_element_by_xpath('//*[@id="submitBT"]').click()
time.sleep(2)
driver.switch_to.window(driver.window_handles[-1])#回首页
sreach_window3=driver.current_window_handle
iframe = driver.find_element_by_xpath("//*[@id='westIFrame']")
# todo switch_to.frame进入到iframe里面去
ActionChains(driver).click(driver.find_elements_by_xpath('//*[@name="root_menu"]')[0]).perform()#点 【客户管理】
#ActionChains(driver).click(driver.find_elements_by_xpath('//*[@name="fastQuery"]')[1]).perform()
driver.switch_to.window(driver.window_handles[-1])#回首页
iframe2 = driver.find_element_by_xpath("//*[@id='telIFrame']")
driver.switch_to.frame(iframe2)
iframe_top = driver.find_element_by_xpath("//*[@id='topFrame']")
driver.switch_to.frame(iframe_top)
driver.find_element_by_xpath("//*[@name='form_fastQuery']").get_attribute("outerHTML") #打印hml
driver.find_element_by_xpath("//input[@name='fastQuery_khzh']").send_keys("75084169100")
driver.find_element_by_xpath("//input[@class='button']").click()
driver.find_element_by_xpath("//span[@id='fast_info']").click()
driver.find_element_by_xpath("//*[@name='fastQuery_khbh']").get_attribute('value')#获取内容
driver.execute_script("window.alert('Selenium执行完毕')")
driver.execute_script("openTopView(18272923)")#获取新的客户表
driver.execute_script("do_search_khbh()") #直接执行【快速查询】按钮
下图,是打开了IE后,按F12调出来的 页面源代码图,通过右上角的 搜索,可以定位到需要的元素