Selenium自动化测试基础

1.访问页面、find_element_by_name选取元素、访问iframe、提交表单

#引入webdriver
from selenium import webdriver
import time as t

driver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(30)
driver.get("http://xxxxx/yyyy")

#添加需求标题
driver.find_element_by_name("data[Story][name]").send_keys("添加需求测试用例")
#添加需求详细描述
iframe = driver.find_element_by_tag_name("iframe")
# driver.switch_to_frame(iframe) //旧版切换iframe
driver.switch_to.frame(iframe)
#清空详细描述
driver.find_element_by_tag_name("body").clear()
#填写需求详细描述
driver.find_element_by_tag_name("body").send_keys("添加需求测试用例");
#切换回父页面
driver.switch_to.default_content()
# 点击提交按钮
# driver.find_element_by_id("btn_save_view").click()
# 提交表单
driver.find_element_by_id("FormStory").submit()
t.sleep(5)
driver.quit()

2. find_element_by_xpath XPath方式选取元素

!/usr/bin/python3
 --coding:utf-8 --
from selenium import webdriver
import time as t

driver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(30)
 driver.get("http://xxxxx/yyyy")
# find_element_by_xpath选取元素
a_link = driver.find_element_by_xpath('//*[@id="searchable"]/div[3]/div/ul/li[2]/p[2]/a')
a_link.click();
t.sleep(5)
driver.quit()

Chrome控制台选中元素,Copy XPath 可以复制出XPath

3.find_element_by_css_selector方式选取元素,execute_script执行js

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time as t
#up = "window.scrollTo(0,0)"
#down = "window.scrollTo(0,document.body.scrollHeight)"
#tui-b是一个带滚动条的容器
#滚动到最顶端
up = "document.querySelector('.tui-b').scrollTop=0"
#滚动条向下滚100px
down = "document.querySelector('.tui-b').scrollTop=100"
driver = webdriver.Chrome()
driver.maximize_window()
driver.get("http://xxxxx/yyyy");
#向下滚动,以便看到update_status_btn按钮
driver.execute_script(down)
driver.find_element_by_css_selector("#update_status_btn").click()
t.sleep(4)
driver.quit()

4.得到当前页面的地址

from selenium import webdriver

driver = webdriver.Chrome()
driver.maximize_window() //最大化窗口
driver.implicitly_wait(30)
driver.get("http://xxx.yyyy")
print('测试地址为: {0}'.format(driver.current_url))
driver.quit()

5.得到当前页面的源码

from selenium import webdriver

driver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(30)
driver.get("http://www.xxxx.com")
print('页面代码如下: {0}'.format(driver.page_source))
driver.quit()

6.得到当前页面的标题

driver = webdriver.Chrome()
print('页面标题:{0}'.format(driver.title))

7.判断元素是否选中

from selenium import webdriver
import time as t

driver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(30)
driver.get("www.sss.com")
login_remember = driver.find_element_by_id("chkWeek")
print("是否记住login: {0}".format(login_remember.is_selected()))
login_remember.click()
print("是否记住login: {0}".format(login_remember.is_selected()))
driver.quit()

8.选取链接元素

from selenium import webdriver
driver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(30)
driver.get("www.yyy.com")
obj = driver.find_element_by_link_text(u"添加需求测试用例")
obj = driver.find_element_by_partial_link_text(u'添加需求测试')
obj.click()
driver.quit()

9.下拉选择框select的定位

from selenium.webdriver import ActionChains
import time as t
driver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(30)
driver.get("http://www.baidu.com")
t.sleep(3)
element = driver.find_element_by_link_text(u'设置')
t.sleep(2)
ActionChains(driver).move_to_element(element).perform()
t.sleep(3)
driver.find_element_by_css_selector('.setpref').click()
t.sleep(3)
nr= driver.find_element_by_id('nr')
select = Select(nr)
select.select_by_visible_text('每页显示20条')  #按文本选择
select.select_by_index(2)    #50 按索引值选择
select.select_by_value('20') #按option的value值选择, 记得要引号
print('下拉框选择的最新条数是:', nr.get_attribute('value'))
t.sleep(3)
driver.quit()

10.原生alert框的定位

from selenium import webdriver
from selenium.webdriver.support.select import Select
//需要的库
from selenium.webdriver.common.alert import Alert
from selenium.webdriver.common.action_chains import ActionChains
import time as t
driver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(30)
driver.get("http://www.baidu.com")
t.sleep(3)
element = driver.find_element_by_link_text(u'设置')
t.sleep(2)
ActionChains(driver).move_to_element(element).perform()
t.sleep(3)
driver.find_element_by_css_selector('.setpref').click()
t.sleep(3)
nr= driver.find_element_by_id('nr')
select = Select(nr)
select.select_by_visible_text('每页显示20条')
select.select_by_index(2)    #50
select.select_by_value('20')
print('下拉框选择的最新条数是:', nr.get_attribute('value'))
t.sleep(3)
driver.find_element_by_css_selector('.prefpanelgo').click()
t.sleep(2)
#获取alert框的文本信息  //关键语句
print('alert框的文本:{0}'.format(driver.switch_to.alert.text))
#点击alert框的确定按钮  //关键语句
driver.switch_to.alert.accept()
driver.quit()