在这个实例中需要注意的是:iframe的切换,试了好几种都切换不成功,目前这个是成功的实例,希望可以帮助到大家!
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from time import sleep
import unittest
class Login126Main(unittest.TestCase):
def setUp(self) -> None:
self.url = ‘https://m.126.com/’
self.username = ‘邮箱地址’
self.userpassword = ‘邮箱密码’
self.driver = webdriver.Firefox()
self.driver.implicitly_wait(30)
self.driver.maximize_window()
def test_login(self):
driver = self.driver
driver.get(self.url)
sleep(5)
self.driver.find_element_by_id("switchAccountLogin").click()
sleep(5)
#切换iframe框架
#driver.switch_to.frame(driver.find_element_by_xpath('//iframe[starts-with(@id, "x-URS-iframe")]'))
WebDriverWait(driver, 10).until(
EC.frame_to_be_available_and_switch_to_it((By.XPATH, '//iframe[starts-with(@id, "x-URS-iframe")]')))
# 填写用户名
driver.find_element_by_xpath('//input[@name="email"]').send_keys(self.username)
# 填写密码
driver.find_element_by_xpath('//input[@name="password"]').send_keys(self.userpassword)
# 提交
driver.find_element_by_xpath('//a[@id="dologin"]').click()
sleep(10)
# 验证跳转成功
self.assertEqual(driver.title, '网易邮箱6.0版', '登录成功')
print("登录成功")
def tearDown(self) -> None:
self.driver.quit()
if name == ‘main’:
unittest.main()