基于selenium控制浏览器完成邵阳学院教师评价

from selenium import webdriver
# from lxml import etree
import time


'''1.基于浏览器的驱动程序实例化一个浏览器对象,即让爬虫模拟一个浏览器'''
bro = webdriver.Edge(executable_path='E:\python工程\项目\selenium_llq/msedgedriver.exe')

'''2.对目标网站发起请求'''
bro.get('http://172.18.2.45/Jwweb/home.aspx')
time.sleep(3)

bro.switch_to.frame('frm_login') #元素以frame嵌套在网页中,需要以id或者name锁定嵌套的网页才能定位
print('ok')
z = bro.find_element_by_id('txt_asmcdefsddsd').send_keys(1941101084) #输入账号

input('wancheng')
try:
    bro.find_element_by_id('btn_login').click() #登入
except:
    print('已登录')




for s in range(1,15):

    # for循环每循环一次,它会刷新一次页面,所有元素都需要重新定位一次,否则会报错
    # frame是HTML中嵌入标签,要选中frame中的元素,需要使用特定的方法。注意它的嵌套方式:同级嵌套、下级嵌套、多级嵌套。
    bro.switch_to.frame('frmbody')
    bro.implicitly_wait(3)
    bro.find_element_by_id('memuBarText9').click()
    bro.find_element_by_xpath('/html/body/form/table/tbody/tr/td[1]/div/table/tbody/tr[21]/td/table/tbody/tr[3]/td[2]/span').click()

    bro.switch_to.frame('frmMain')
    bro.switch_to.frame('main')
    bro.find_element_by_id(f'pj{s}').click()
    bro.implicitly_wait(2)

    # 选定新窗口
    W = bro.window_handles  # 获取所有selenium打开窗口的句柄
    bro.switch_to.window(W[-1])  # 选中最新打开的页面窗口句柄
    bro.implicitly_wait(1)

    try:
        for i in range(20):
            try:
                bro.find_element_by_xpath(f'//*[@id="sel_score{i}"]/input[1]').click()
                time.sleep(0.1)
            except:
                break

        # 提交确定
        bro.find_element_by_name('Submit').click()
        bro.implicitly_wait(3)
        # 切换到弹窗
        a = bro.switch_to.alert
        bro.implicitly_wait(2)
        # 点击确定
        a.accept()
        bro.implicitly_wait(3)
    except:
        bro.close()

    # 返回原始窗口
    windows = bro.window_handles
    bro.switch_to.window(windows[0])
    # print(bro.page_source)

# bro.quit()

该项目为学习记录,不做讲解。

你可能感兴趣的:(python,selenium)