selenium模拟点击,并未带上账号密码的信息,所以直接点解链接会弹出登录框,使点击元素首次无法被正常点击。
import random
import time
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC, select, wait
from selenium.webdriver.common.by import By
driver=webdriver.Chrome('K:/zhusc/chromedriver.exe')
def wait_for_you(myDynamicElement):
try:
wait=WebDriverWait(driver,20)
element=wait.until(EC.presence_of_element_located((By.XPATH,myDynamicElement)))
except:
print('can not find the element:',myDynamicElement)
else:
try:
driver.find_element_by_xpath(myDynamicElement).click()
except:
print('the element can not be clicked')
def switch_iframe(myDynamicElement): #切换iframe
try:
wait = WebDriverWait(driver, 20)
element = wait.until(EC.presence_of_element_located((By.XPATH,myDynamicElement)))
el_path = driver.find_element_by_xpath(myDynamicElement)
driver.switch_to.frame(el_path)
except:
print('can not find iframe:',myDynamicElement)
driver.get("https://blog.csdn.net/xm_csdn/article/details/53419133")
driver.maximize_window() #窗口最大化
switch_iframe('//*[@id="kp_box_58"]/iframe')
wait_for_you('//*[@id="7488"]/div/div/a')
driver.switch_to_default_content()#退出iframe
wait_for_you('//*[@id="passportbox"]/span')
switch_iframe('//*[@id="kp_box_58"]/iframe')
wait_for_you('//*[@id="7488"]/div/div/a')
driver.switch_to_default_content()#退出iframe
driver.quit()