12.2
元素定位从大的分类而言,分为两种:
1、单个元素的定位
2、多个元素的定位
当元素属性的ID,name等完全一致的时候,那么这个时候,你发现无法使用
单个元素定位的方式来解决,那么可以使用多个元素定位的方式来进行
解决。思路:
获取元素的属性,其实是一个列表,看我们被定位的目标属性是在
第几位,那么就使用索引。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div>
<center>
<p>用户名:<input type="text" id="user"></p>
<p>密码:<input type="text" id="user"></p>
<p>登录:<input type="button" id="user"></p>
</center>
</div>
</body>
</html>
driver=webdriver.Chrome()
driver.get('file:///D:/code/testdev/Ui%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95/zxc.html') 在本地文档找到地址
lists=driver.find_elements_by_id('user')
t.sleep(3)
lists[0].send_keys('gao') 对应代码索引的位置
t.sleep(3)
lists[1].send_keys('asdf')
t.sleep(3)
lists[2].click()
t.sleep(5)
driver.quit()

from selenium import webdriver
import time as t
driver=webdriver.Chrome()
driver.get('http://www.baidu.com')
lists=driver.find_elements_by_tag_name('input')
lists[7].send_keys('hhh') 获取源代码的索引
t.sleep(2)
driver.find_element_by_id('su').click()
t.sleep(2)
driver.quit()
属性
获取测试的地址&获取源代码
from selenium import webdriver
driver=webdriver.Chrome()
'''获取测试的地址'''
driver.get('http://www.baidu.com')
driver.find_element_by_link_text('hao123').click()
print('获取测试的地址:',driver.current_url)
print('获取当前源代码:',driver.page_source)
# 断言
assert driver.current_url.endswith('hao.123.com/')==True
print(driver.title)
assert driver.title=='百度一下,你就知道'
driver.close()

前进和后退
from selenium import webdriver
driver=webdriver.Chrome()
import time as t
driver=webdriver.Chrome()
driver.get('http://www.baidu.com')
t.sleep(2)
driver.get('http://www.hao123.com')
t.sleep(2)
driver.back()
print('地址为:',driver.current_url)
t.sleep(2)
driver.forward()
print('地址为:',driver.current_url)
t.sleep(2)
driver.close()

判断
from selenium import webdriver
driver=webdriver.Chrome()
import time as t
driver=webdriver.Chrome()
driver.get('http://www.baidu.com')
'''获取当前窗口'''
nowHnadler=driver.current_window_handle
t.sleep(3)
driver.find_element_by_partial_link_text('hao123').click()
t.sleep(3)
# 获取所有的窗口
allHandlers=driver.window_handles
t.sleep(3)
for itme in allHandlers:
# 判断窗口不是当前窗口
if itme!=nowHnadler:
# 切换新窗口
driver.switch_to.window(itme)
t.sleep(3)
driver.find_element_by_xpath('//*[@id="search"]/form/div[2]/input').send_keys('hao123')
t.sleep(5)
driver.close()
# 切换到当前的窗口
driver.switch_to.window(nowHnadler)
t.sleep(3)
driver.find_element_by_id('kw').send_keys('baidu')
t.sleep(5)
driver.quit()
清空
from selenium import webdriver
driver=webdriver.Chrome()
import time as t
driver=webdriver.Chrome()
driver.maximize_window()
driver.get('https://www.jd.com/')
so=driver.find_element_by_class_name('text')
so.send_keys('水果')
t.sleep(3)
so.clear()
t.sleep(3)
driver.quit()
get_attribute():获取元素属性的值所有的input里面输入的值,都是在value的属性
from selenium import webdriver
import time as t
driver=webdriver.Chrome()
driver.maximize_window()
driver.get('http://www.lagou.com')
t.sleep(4)
# 点击登录按钮
driver.find_element_by_link_text('登录').click()
t.sleep(5)
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').send_keys('123456')
# print(login.get_attribute('placeholder'))
t.sleep(5)
driver.quit()
from selenium import webdriver
driver=webdriver.Chrome()
import time as t
driver=webdriver.Chrome()
# driver.maximize_window()
driver.get('https://www.lagou.com/')
so=driver.find_element_by_id('search_input')
t.sleep(3)
so.send_keys('admin')
t.sleep(3)
print(so.get_attribute('value'))
driver.quit()
is_displayed():是否可见
is_enabled():是否可编辑
from selenium import webdriver
import time as t
driver=webdriver.Chrome()
# driver.maximize_window()
driver.get('http://www.baidu.com/')
aboutBaidu=driver.find_element_by_link_text('关于百度')
print(aboutBaidu.is_displayed())
t.sleep(3)
# is_displayed():是否可见
# is_enabled():是否可编辑
# readly
driver.quit()
判断是否勾选
from selenium import webdriver
import time as t
driver=webdriver.Chrome()
# driver.maximize_window()
driver.get('https://mail.sina.com.cn/')
autoLogin=driver.find_element_by_id('store1')
t.sleep(3)
print('是否勾选:',autoLogin.is_selected())
t.sleep(3)
autoLogin.click()
t.sleep(3)
print('是否勾选:',autoLogin.is_selected())
driver.quit()
iframe框架定位
from selenium import webdriver
import time as t
driver=webdriver.Chrome()
# driver.maximize_window()
driver.get('https://mail.sina.com.cn/')
t.sleep(3)
driver.find_element_by_id('freename').send_keys('w4eaestry')
t.sleep(5)
driver.find_element_by_id('freepassword').send_keys('347437///')
t.sleep(5)
driver.find_element_by_class_name('loginBtn').click()
t.sleep(3)
driver.quit()
下拉框
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<center>
喜欢的编程语言:
<select id="nr">
<option value="" selected>请选择您喜欢的编程语言</option>
<option value="Python">Python语言</option>
<option value="Go">Go语言</option>
<option value="Java">Java语言</option>
</select>
</center>
</body>
</html>
from selenium import webdriver
from selenium.webdriver.support.select import Select
import time as t
driver=webdriver.Chrome()
# driver.maximize_window()
driver.get('file:///D:/code/testdev/Ui%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95/index.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()

浙公网安备 33010602011771号