以tpshop商城为例
- add_cookie({‘name’:’ ‘,‘value’:’ '})
在get登录页面后添加cookie,可以get到登录后的页面,而不需要使用用户名和密码登录 - 在系统–》设置–》商城设置–》网页信息–》联系人
修改联系人的名字,点击保存
代码
import unittest
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.by import By
'''
class TestBaidu(unittest.TestCase):
def test_01(self):
driver=webdriver.Chrome()
driver.get('https://www.baidu.com/')
driver.find_element('id','kw').send_keys('selenium')
driver.find_element('id','su').click()
sleep(10)
#ok
'''
class Test_Tpshop(unittest.TestCase):
def test_02(self):
global driver;
driver=webdriver.Chrome()
#前台搜索
#driver.get('http://www.myshop.com/index.php')
#driver.find_element(By.ID,'q').send_keys('小米')
#driver.find_element(By.XPATH,'//*[@id="searchForm"]/button').click()
#sleep(5)
#后台登录
driver.get('http://www.myshop.com/index.php/Admin/Admin/login')#登录页面
#cks=driver.get_cookies()
#for ck in cks:
# print(ck)
#添加登录后的cookie,F12--》application--》cookies
driver.add_cookie({'name': 'admin_type', 'value': '1'})
driver.add_cookie({'name': 'PHPSESSID', 'value': 'l2kehcdal9bu2bh4cmflhl4153'})
driver.add_cookie({'name': 'workspaceParam', 'value': 'welcome%7CIndex'}) #工作空间参数
driver.add_cookie({'name': 'is_mobile', 'value': '0'})
driver.add_cookie({'name': 'city_id', 'value': '2'})
driver.add_cookie({'name': 'province_id', 'value': '1'})
driver.add_cookie({'name': 'district_id', 'value': '3'})
driver.get('http://www.myshop.com/index.php/Admin/Index/index') #登陆之后的页面
#可以进入绕过登录进入到登陆之后的页面
#点击“系统”
driver.find_element(By.XPATH,'/html/body/div[1]/div[4]/ul/li[1]/a').click()
#driver.add_cookie({'name': 'workspaceParam', 'value': 'index%7CSystem'}) #工作空间参数
#点击“设置”
driver.find_element(By.XPATH,'//*[@id="admincpNavTabs_system"]/dl[1]/dt/a/span').click()
#点击“商城设置”
driver.find_element(By.CSS_SELECTOR,'#admincpNavTabs_system > dl.active > dd > ul > li.active > a').click()
#切换iframe
driver.switch_to.frame('workspace')
#点击“网站信息”
driver.find_element(By.XPATH,'/html/body/div[3]/div[1]/div/ul/li[1]/a').click()
#填写“联系人”
driver.find_element(By.XPATH,'//*[@id="contact"]').send_keys('李四')
#点击“确认提交”
driver.find_element(By.XPATH,'//*[@id="handlepost"]/div/div/a').click()
无法定位元素的问题,报错:
解决办法
- 检查目前所有页面的句柄,如果联系人修改页面的句柄和当前句柄不是同一个,应当将页面句柄切换到当前需要执行操作的页面
handles=driver.window_handles
print(driver.window_handles)
#页面句柄切换
#driver.switch_to.window(handles[1])
执行完发现目前操作过的页面都是同一个句柄
-
使用ID、XPATH、NAME、CSS_SELECTOR、CLASS_NAME、LINK_TEXT、PARTIAL_LINK_TEXT、TAG_NAME中的其他元素定位
-
检查需要操作的部分是否包含有iframe,作为嵌入页面,如果是,需要使用switch_to.frame(‘frame的id’)
driver.switch_to.frame('workspace')
在“网页设置”之前添加以下代码,切换iframe
添加好后,重新运行代码,成功
4. 可能是当前需要查找的元素没有加载完成,需要在报错的代码前加等待时间
from time import sleep
sleep(5)