延迟机制
- from selenium.webdriver.support.wait import WebDriverWait
- from selenium.webdriver.support import expected_conditions as EC
- from selenium.webdriver.common.by import By
-
- driver = webdriver.Firefox()
- driver.get('https://www.guiderank-app.com/goods-search?categoryId=14606257169901630856')
- my_element = WebDriverWait(driver, 10).until(
- EC.presence_of_element_located((By.XPATH, '//*[@id="app"]/div[2]/div[3]/div/div[2]/div/div[1]/div[2]')))
- # elemen=driver.find_element(By.XPATH,'//div[contains(@class,"el-dialog__wrapper")]/*[contains(@class,"el-dialog myDialog")]/*[contains(@class,"el-dialog__body")]/*[contains(@class,"newuser")]/span').text
- print(my_element)
新框架:
- browser=webdriver.Firefox()
- browser.get("https://mail.qq.com/")
- browser.switch_to.frame("login_frame")#切换到内嵌iframe
- browser.find_element_by_class_name("inputstyle").send_keys("xxxxx")
- pyautogui.hotkey('Tab')
- browser.find_element_by_class_name("inputstyle.password").send_keys("xxxxx")
- browser.switch_to.default_content()#回到默认的iframe
-
- url = 'http://daka.95155.com/login.html'
- # url ='https://login.51job.com/login.php?loginway=0&isjump=0&lang=c&from_domain=i&url='#调试代码
- driver.get(url) # 加载网址
- time.sleep(5)
- #调试代码
- # elemen=driver.find_element(By.XPATH,"//div[@class='hands-main']").text # 点击账户登录
- # driver.find_element(By.XPATH,
- # ".//div[@class='btnbox']/*[contains(@data-sensor-id,'sensor_login_signinButton')]").click() # 点击账户登录
- # driver.find_element(By.XPATH,
- # "//div[@class='el-dialog__body']/div[@class='loginBtnWrap']/button[@class='el-button loginBtn el-button--primary']/span[text()=\"登录\"]").click() # 点击账户登录
- # elemen=driver.find_element(By.XPATH,
- # "//div[@class='el-dialog__body']/div[@class='loginBtnWrap']/button[@class='el-button loginBtn el-button--primary']/span[text()=\"登录\"]") # 点击账户登录
- driver.switch_to.frame('businesslineIframe')
- my_element=driver.find_element(By.XPATH,
- "//div[@class='el-dialog__body']/div[@class='newuser']/span") # 点击账户登录
-
- print(my_element)
- driver.find_element(By.XPATH,"//div[@class='el-dialog__body']/div[@class='loginBtnWrap']/button[@class='el-button loginBtn el-button--primary']/span[text()=\"登录\"]").click() # 点击账户登录
代码对比:
- # 已报错代码:
- driver.find_element_by_xpath(
- ".//div[@class='loginBtnWrap']/*[@class='el-button loginBtn el-button--primary']").click() # 点击密码登录
- # 升级后写法
- driver.find_element(By.XPATH, "//div[@class='loginBtnWrap']/*[@class='el-button loginBtn el-button--primary']"). \
- send_keys(Keys.ENTER) # .click() # 点击账户登录
-
- # 最新反扒(延迟+CSS框架)
- url = 'http://daka.95155.com/login.html'
- # url ='https://www.fengyupt.com/'#调试代码
- driver.get(url) # 加载网址
- time.sleep(1)
- driver.switch_to.frame('businesslineIframe')
- # my_element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, '//*[@id="app"]/div[2]/
- # div[3]/div/div[2]/div/div[1]/div[2]')))
- driver.find_element(By.XPATH, ".//div[contains(@class,'el-tabs__nav is-top is-stretch')]/div[@class='el-tabs__item "
- "is-top is-active'").send_keys(Keys.ENTER) # .click() # 点击账户登录
-
- #密码登录标签点击失败
- driver.find_element(By.XPATH, "//div[@class='el-tabs__nav is-top is-stretch']/div[2]").click() # 密码登录
- # js点击密码登录标签
- js = 'document.getElementsByClassName("el-tabs__item is-top")[1].click()'
- js1 = 'document.getElementById("tab-password").click()'
- driver.execute_script(js1)
- time.sleep(0.3)
- name = ''
- word = ''
-
- ''''''
- #直接赋值失败
- WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//div[@class='el-form-item__content']/"
- "div[@class='el-input el-input--prefix el-input--suffix']/input[@class='el-input__inner']"))).send_keys(name)
- # 通过tab键盘滑动输入账户密码
- driver.switch_to.active_element.send_keys(Keys.TAB)
- time.sleep(0.3)
- driver.switch_to.active_element.send_keys(name)
- time.sleep(0.3)
- driver.switch_to.active_element.send_keys(Keys.TAB)
- time.sleep(0.3)
- driver.switch_to.active_element.send_keys(word)
- time.sleep(0.3)