web自动化--操作

2020-05-12  本文已影响0人  xiaohan_zhang
一、操作元素
二、操作浏览器
三、获取元素信息
四、鼠标操作

from selenium.webdriver.common.action_chains import ActionChains

action.context_click(drive.find_element_by_id('mytxtdafdfasdf')).perform()
action.double_click(drive.find_element_by_css_selector('div.gwA18043_ind01')).perform()
action.move_to_element(drive.find_element_by_css_selector('#lmdq a')).perform()
五、键盘操作

from selenium.webdriver.common.keys import Keys

六、元素等待

在定位页面元素时,如果未找到,会在指定时间内等待的过程。

    element = WebDriverWait(driver, timeout=10, poll_frequency=0.5).until(
        lambda x: x.find_element_by_id('kw')
    )
    element.send_keys('海贼王')
七、选择框
# 找到select元素
select = Select(driver.find_element_by_css_selector('#ss_single'))
select.select_by_value('小雷老师')
select.select_by_index(2)
select.select_by_visible_text('小雷老师')
select = Select(wd.find_element_by_css_selector('#ss_multi'))
# 全不选
select.deselect_all()
select.select_by_value('小雷老师')
select.select_by_index(0)
select.select_by_visible_text('小凯老师')
radio = wd.find_element_by_css_selector('#s_radio input[checked="checked"]')
# 点选小雷老师
wd.find_element_by_css_selector('#s_radio input[value="小雷老师"]').click()
checkboxs = wd.find_elements_by_css_selector('#s_checkbox input[checked="checked"]')
# 为了确保把所有想选的都选中,把所有被选中的都点一遍,变成未选中状态,然后再去选择
for checkbox in checkboxs:
    checkbox.click()
wd.find_element_by_css_selector('#s_checkbox input[value="小雷老师"]').click()
wd.find_element_by_css_selector('#s_checkbox input[value="小凯老师"]').click()
八、弹出框
alert = driver.switch_to.alert
# 点击确定按钮
alert.accept()
# 获取alert文本
alert.text
# 点击确定按钮
driver.switch_to.alert.accept()
# 点击取消按钮
driver.switch_to.alert.dismiss()
prompt = driver.switch_to.alert
# 输入信息
prompt.send_keys('web自动化')
# 点击确定按钮  提交
prompt.accept()
# 取消按钮
prompt.dismiss()
九、滚动条

js脚本实现

# 0:左边距  1000:上边距   单位像素
js = "window.scrollTo(0, 1000)"
# 调用js代码
driver.execute_script(js)
十、窗口切换
wd = webdriver.Chrome()
wd.get('http://cdn1.python3.vip/files/selenium/sample2.html')
wd.implicitly_wait(5)
# 切换到iframe中,参数id或name属性值
wd.switch_to.frame('frame1')
# 如果没有id、name属性,可以根据其他属性查找
# wd.switch_to.frame(wd.find_element_by_css_selector('[src="sample1.html"]'))

elements = wd.find_elements_by_css_selector('.plant')
for element in elements:
    print(element.text)

# 返回上一级html
# wd.switch_to.parent_frame()

# 切换到主html 即最开始的html
wd.switch_to.default_content()
wd = webdriver.Chrome()
wd.get('http://tv.cctv.com')
wd.implicitly_wait(5)
# 找到节目单
# link = wd.find_element_by_css_selector('.nav li:nth-child(3) a')
link = wd.find_element_by_css_selector('.left a:nth-child(1)')
# 当前窗口
main_window = wd.current_window_handle
print(wd.title)

sleep(2)
link.click()
# 切换到新窗口
for handle in wd.window_handles:
    wd.switch_to.window(handle)
    if link.text in wd.title:
        break
# 当前窗口的title
print(wd.title)
sleep(2)
# 点击链接打开新的标签页,回到主窗口,跳转窗口前保存
wd.switch_to.window(main_window)
十一、截屏、验证码处理
# 由于测试时可能失败多次,产生多个截图,可以用时间戳命名
name = int(time.time())
driver.get_screenshot_as_file('./' + str(name) + '.png')
十二、cookie

获取网站所有cookie
driver.get_cookies()
获取指定cookie(name对应的值)
driver.get_cookie('BIDUPSID')
添加cookie
driver.add_cookie({'name': 'BDUSS', 'value': BDUSS})

上一篇下一篇

猜你喜欢

热点阅读