selenium2学习:浏览器控制、简单操作、鼠标事件和键盘事件、获得验证信息、设置元素等待

1.1.1      浏览器窗口大小set_windows_size()

# coding=utf-8

from selenium import webdriver

driver = webdriver.Chrome()

driver.get("http://news.baidu.com/")

driver.set_window_size(480,800)  #设置浏览器大小为移动端样式

driver.maximize_window()  #设置浏览器全屏显示

1.1.2      浏览器前进、后退

driver.back()

driver.forward()

1.1.3      浏览器刷新

driver.refresh()

1.2     简单元素操作

clear()             #清空

send_keys(“value”)   #输入值

扫描二维码关注公众号,回复: 111988 查看本文章

click()              #点击 (按钮、图片、复选框、单选框、下拉框等)

1.2.1      WebElement接口常用方法

u  submit()                 #提交表单

u  元素.size                #返回元素尺寸

u  元素.text                #获取元素文本

u  元素.get_attribute(name)  #获取name属性值 如:.get_attribute(‘type’)

u  元素.is_displayed         #返回该元素是否用户可见(可见:True)

1.3     鼠标事件

鼠标操作的方法封装在ActionChains类。

引入ActionChains:

from selenium.webdriver.common.action_chains import ActionChains

u  perform()  执行所有ActionChains中存储的行为

u  context_click()  右击

u  double_click()  双击

u  move_to_element()  鼠标悬停

u  drag_and_drop()  拖动

例如:

元素a = driver.find_element_by_id(‘xx’)

元素b = driver.find_element_by_id(‘ww’)

1.3.1      右击a

ActionChains(driver).context_click(a).perform()

1.3.2      双击a

ActionChains(driver). double_click(a).perform()

1.3.3      悬停a

ActionChains(driver). move_to_element(a).perform()

1.3.4      拖动a至b

ActionChains(driver). drag_and_drop(a,b).perform()

1.4     键盘事件

#引入键盘事件

from selenium.webdriver.common.keys import keys

常见操作:

Send_keys(keys.BACK_SPACE)                删除键

send_keys(Keys.SPACE)                             空格键

send_keys(Keys.TAB)                                制表键

send_keys(Keys.ESPACE)                           回退键

send_keys(Keys.ENTER)                            回车键

send_keys(Keys.CONTROL,'a')                     全选

send_keys(Keys.CONTROL,'c')                     复制

send_keys(Keys.CONTROL,'x')                     剪切

send_keys(Keys.CONTROL,'v')                     粘贴

send_keys(Keys.F1)                                 F1

1.5     获得验证信息

获得title、url、或text进行验证。

  • driver.title
  • driver.current_url
  • 元素.text

1.6     设置元素等待

1.6.1      显示等待

webdriver等待某个条件成立时继续执行,否则在达到最大时长的时候抛出TimeoutException。

# 引入元素等待方法

from selenium.webdriver.support.ui import WebDriverWait

WebDriverWait类由webdriver提供的等待方法,在设置的时间内,默认每隔一段时间检测一次当前页面元素是否存在,如果超出设置的时间为检测出元素,则抛出异常。语法如下:

WebDriverWait(driver, timeout, poll_frequency=0.5, ignored_exceptions=None)

  • driver:浏览器驱动
  • timeout:超时时间,单位为秒
  • poll_frequency:检测的间隔时间,默认为0.5s
  • ignored_exceptions:超时后抛得异常,默认情况下抛NoSuchElementException.

WebDriverWait()一般由until()或until_not()配合使用。

²  until(method,massage’’):调用该方法提供的驱动程序作为一个参数,直至返回值为True

²  until_not(method,massage’’):调用该方法提供的驱动程序作为一个参数,直至返回值为False

1.6.1.1       expected_conditions

expected_conditions类提供的预期条件判断的方法

u  title_is 判断当前页面的标题是否等于预期

u  title_contains 判断当前页面标题是否包含预期字符串

u  presence_of_element_located 判断元素是否被加在DOM树里,并不代表该元素一定可见

u  visbility_of_element_located 判断元素是否可见(可见代表元素非隐藏,并且元素的宽和高都不等于0)

u  visbility_of  与上一个方法作用相同,只是接收参数不同。上一个接收参数是定位,这一个参数是定位后的元素

u  presence_of_all_elements_located 判断是否至少有一个元素存在于DOM树中。只要有1个就返回True

u  text_to_be_present_in_element 判断某个元素中的text是否包含了预期的字符串

u  text_to_be_present_in_element_value 判断某个元素的value属性是否包含了预期的字符串

u  frame_to_be_available_and_switch_to_it 判断该表单是否可以切换进去,如果可以,返回True并且switch进去,否则返回False

u  invisbility_of_element_located 判断某个元素是否不存在于DOM树或不可见

u  element_to_be_clickable() 判断某个元素是否可见并且是可以点击的

u  staleness_of 等到一个元素从DOM树中移除,判断一个元素是否仍在DOM,可判断页面是否已经刷新

u  element_to_be_selected 判断某个元素是否被选中,一般用在下拉列表

u  element_selection_state_to_be 判断某个元素的选中状态是否符合预期,传入元素对象以及状态,相等返回True,否则返回False

u  element_located_selection_state_to_be 与上一个方法作用相同,只是上一个方法参数是定位后的元素,该方法接收的参数是定位

u  alert_is_present 判断页面上是否存在alert

例如:

Ele = WebDriverWait(driver, 5,0.5).until(EC. presence_of_element_located(By.ID,’wk’))

1.6.1.2       is_displayed

for i in range(10):

    try:

        el = driver.find_element_by_id("s_btn_wr")

        if el.is_displayed():

            break

        except:pass

        sleep(1)

    else:

        print('time out')

1.6.2      隐式等待

通过设定的时长等待页面元素加载完成。如果超过设定时间还未加载完成,抛出NoSuchElementException。webdriver提供了implicitly_wait()方法来实现隐式等待,默认设置为0.

# coding=utf-8

from selenium import webdriver

from selenium.common.exceptions import NoSuchElementException

from time import ctime

 

driver = webdriver.Chrome()

driver.implicitly_wait(10)   #等待10

driver.get("http://news.baidu.com/")

 

try:

    print(ctime())

    driver.find_element_by_id("ww").send_keys("selenium2")

    except NoSuchElementException as e:

        print(e)

    finally:

        print(ctime())

driver.quit()

1.6.3      sleep休眠

# 引入sleep()方法

from time import sleep

sleep(2)   固定休眠2秒

猜你喜欢

转载自www.cnblogs.com/jxba/p/8993518.html