iframe

 

对含有iframe模块的定位:

我们直接通过ID或者Name无法定位,这时我们就要观察是否含有iframe,如果含有我们就首先需要进入ifreme.

通过ID或者Name 进入iframe模块后,在进行具体的元素定位。

以QQ邮箱为例,具体代码:

from selenium import webdriver
import time as t

driver=webdriver.Chrome()
#导航道被测的网址
driver.get('https://mail.qq.com/')
t.sleep(5)
#通过ID方式进入login_frame
# driver.switch_to.frame('login_frame')
#通过name方式进入login_frame
driver.switch_to.frame('login_frame')
driver.find_element_by_id('u').send_keys('1297475047') 
t.sleep(8)
driver.find_element_by_id('p').send_keys('cl19971220#%')
t.sleep(8)
driver.find_element_by_id('login_button').click()
t.sleep(8)

 每个网页的不同,具体的反应时间也不同,这时我们就要给留出一定的反应时间,

 

from selenium import webdriver
import time as t
'''索引的方式'''
driver=webdriver.Chrome()
driver.maximize_window()
driver.get('https://mail.163.com/')
t.sleep(5)
#索引的方式
driver.switch_to.frame(0)
t.sleep(3)
driver.find_element_by_name('email').send_keys('qwere56@163.com')
t.sleep(5)
driver.quit()

 

 

 获取当前页的源代码,断言和页面title


from  selenium  import webdriver
import time as t

driver=webdriver.Chrome()
'''获取测试的地址'''
driver.get('http://www.baidu.com')
driver.find_element_by_partial_link_text('hao').click()
print('获取测试的地址:',driver.current_url)
print('获取当前页面源代码:',driver.page_source)
#断言
assert  driver.current_url.endswith('hao123.com/')==True
#获取页面title
print(driver.title)
assert driver.title=='百度一下,你就知道'
driver.close()

网页的前进后退和刷新


'''前进和和后退'''
driver.get('http://www.baidu.com')
t.sleep(3)
driver.get('http://www.bing.com')
t.sleep(3)
driver.back()
print('获取的地址:',driver.current_url)
t.sleep(3)
driver.forward()
t.sleep(3)
print('获取的地址:',driver.current_url)
t.sleep(3)
#刷新
driver.find_element_by_id('sb_form_q').send_keys('chen')
t.sleep(3)
driver.refresh()
t.sleep(3)
driver.close()


driver.get('http://www.baidu.com')
#获取当前窗口
nowHander=driver.current_window_handle
t.sleep(3)
driver.find_element_by_partial_link_text('hao').click()
t.sleep(3)
#获取所有窗口
allHander=driver.window_handles
t.sleep(3)
for Hander in allHander:
    #判断窗口不是当前窗口
    if Hander!=nowHander:
        #切换到新的窗口
        driver.switch_to.window(Hander)
        t.sleep(5)
        driver.find_element_by_xpath('//*[@id="search"]/form/div[2]/input').send_keys('chen')
        t.sleep(3)
        driver.close()
driver.switch_to.window(nowHander)
t.sleep(5)
driver.find_element_by_id('kw').send_keys('百度一下')
t.sleep(3)
driver.quit()

页面跳转(只能两个页面之间转换,多个页面之间转换两两之间转换)

输入框清空

以百度为例,再输入框里输入“疫情”,再清空

具体代码为:

driver=webdriver.Chrome()
driver.get('http://www.baidu.com')
so=driver.find_element_by_id('kw')
so.send_keys('疫情')
t.sleep(3)
so.clear()
t.sleep(3)
driver.quit()

 

get_attribute():获取元素属性的值
所有的input里面输入的值,都是在value的属性
driver=webdriver.Chrome()
driver.get('http://www.lagou.com')
t.sleep(5)
#点击登录
driver.find_element_by_link_text('登录').click()
t.sleep(3)
login=driver.find_element_by_xpath(
    '/html/body/div[3]/div[1]/div/div/div[2]/div[3]/div[1]/div/div[2]/form/div[1]/div/input')
print(login.get_attribute('placeholder'))
t.sleep(3)
driver.quit()

页面元素是否可见

driver=webdriver.Chrome()
driver.maximize_window()
driver.get('https://www.baidu.com/')
aboutBaidu=driver.find_element_by_link_text('关于百度')
print(aboutBaidu.is_displayed())
driver.quit()

页面勾选元素是否勾选

driver=webdriver.Chrome()
driver.get('https://mail.sina.com.cn/')
autoLogin=driver.find_element_by_id('store1')
t.sleep(3)
print('是否勾选',autoLogin.is_selected())
autoLogin.click()
t.sleep(3)
print('是否勾选',autoLogin.is_selected())
driver.quit()

 

下拉框定位
首先对规范的下拉框进行展示

 

 我们要选择下拉框中的Go语言。

具体代码为:

from selenium import webdriver
#导入Select的类
from selenium.webdriver.support.select import Select
import time as t

driver=webdriverer.Chrome()
driver.get(
    'file:///D:/code/testdev/UI%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95/%E9%80%89%E6%8B%A9%E8%AF%AD%E8%A8%80.html')
t.sleep(3)
nr=driver.find_element_by_id('nr')
#针对Select类进行实例化
select=Select(webelement=nr)
#索引
# select.select_by_index(2)
#value
# select.select_by_value('Go')
#文本
select.select_by_visible_text('Go语言')
t.sleep(3)
driver.quit()

 在实际中,我们遇到的下拉框基本上不是规范的,这里以拉钩网为例,我们对“测试开发工程师里的薪资10-20”进行定位选择。

driver=webdriver.Chrome()
driver.maximize_window()
driver.get('https://www.lagou.com/')
t.sleep(5)
driver.find_element_by_id('search_input').send_keys('测试开发工程师')在输入框输入“测试开发工程师”
t.sleep(3)
driver.find_element_by_id('search_button').click()
t.sleep(6)
driver.find_element_by_xpath('//*[@id="jobsContainer"]/div[2]/div[1]/div[1]/div[2]/div/ul/li[3]/div/span').click()定位到薪资要求
t.sleep(5)
driver.find_element_by_xpath('//*[@id="jobsContainer"]/div[2]/div[1]/div[1]/div[2]/div/ul/li[3]/div/div/ul[2]/li[4]/span').click()定位到10-20
t.sleep(8)
driver.quit()

这里要特别注意在复制XPath是我们要特别注意,复制过来的是否正确,当我们确定找到正确的XPath位置但还是无法进入时

 ,就要特别关注一下div[]索引位置是否正确

posted @ 2021-12-02 18:31  晨^O^黎  阅读(210)  评论(0编辑  收藏  举报