偶然看到网友的求助,一个网站中的元素定位:frame下面有frame,frame中有弹窗,弹窗中还有frame,最奇怪的是id,name都一样。。。看实例:
#coding: utf-8
import time
driver = webdriver.Chrome()
driver.get("http://www.kaow.cn/index.html")
driver.maximize_window()
driver.find_element_by_id('user').send_keys('15807550000')
driver.find_element_by_id('pwd').send_keys('123456')
driver.find_element_by_id('login').click()
time.sleep(2)
driver.switch_to.frame('ifContent')
driver.find_element_by_id('create-exam').click()
time.sleep(2)
driver.switch_to.default_content()
driver.switch_to.frame('ifContent_tc')
driver.find_element_by_id('exam-name').send_keys('math1243')
time.sleep(1)
driver.find_element_by_id('next-step').click()
time.sleep(1)
driver.find_element_by_xpath('//*[@id="subjects-content"]/div[1]/div[1]').click()
time.sleep(1)
driver.find_element_by_xpath('/html/body/div[4]/div[2]').click()
time.sleep(1)
driver.find_element_by_xpath('//*[@id="subjects-content"]/div[1]/div[2]/div/span').click()
time.sleep(1)
driver.find_element_by_xpath('/html/body/div[5]/div[1]/div[1]').click()
time.sleep(1)
driver.find_element_by_id('next-step').click()
time.sleep(1)
driver.find_element_by_xpath('//*[@id="add-school"]').click()
time.sleep(2)
driver.switch_to.default_content()
方法一
frame. = driver.find_element_by_css_selector('iframe[src="infoManager/add-exam-school.html"]')
driver.switch_to.frame(frame)
driver.find_element_by_xpath('//*[@id="school-list"]/div[1]/input').click()
方法二
#js = '$("iframe[src=\'infoManager/add-exam-school.html\']").contents().find("school-list input[type=\'checkbox\']").eq(0).attr("checked","true")'
#driver.execute_script(js) #选中第一项
#js = '$("iframe[src=\'infoManager/add-exam-school.html\']").contents().find("#school-list input[type=\'checkbox\']:even").attr("checked","true")' # 选中基数项
#js = '$("iframe[src=\'infoManager/add-exam-school.html\']").contents().find("#school-list input[type=\'checkbox\']").attr("checked","true")' # 全选
#driver.execute_script(js)
#time.sleep(1)
#js2 = '$("iframe[src=\'infoManager/add-exam-school.html\']").contents().find("#school-list input[type=\'checkbox\']").removeAttr("checked")' # 取消全选
#driver.execute_script(js2)