selenium操控元素的基本方法
**实验目的:**了解在 selenium中选择界面元素后操控的基础方法,能在PyCharm环境下使用sclenium 中 WebElement的相关函数实现元紊的.
**基本操控:**元素鼠标左键点击、输入框传入文本及清空文本、获取元素文本内容、获取元素各种属性值.
**实验要求:**在pycharm环境下完成实验目的中所述各项任务.
实验条件: win7/10、pycharm. selenium4.4.0 .
操控元素通常包括:
点击元素
在元素中输入字符串,通常是对输入框这样的元素
获取元素包含的信息,比如文本内容,元素的属性
点击元素
点击元素
顾名思义,通过调用元素WebElement对象的click()方法,来实现点击这个动作。在调用方法的时候,浏览器收到自动化命令,默认点击所选元素的中间位置
我们要点击 更多
这个按钮,相当于点击右边这条相关链接。
输入框
要在输入框中输入字符串,需要调用元素WebElement对象的send_keys()
方法。如果输入框中存在字符串,可以使用WebElement对象的clear()方法来将内容清除。
1 2
| element.clear() element.send_keys('新字符串')
|
获取元素的信息
获取元素的文本内容
获取元素属性
获取整个元素对应的HTML
获取输入框里面的文字
1 2 3 4 5 6 7 8
| element = wd.find_element(By.ID, 'ID值') print(element.text)
element.get_attribute('innerText') element.get_attribute('textContent')
|
1 2 3 4 5
| element = wd.find_element(By.ID. 'ID值') print(element.get_attribute('class'))
wd.quit()
|
1 2 3 4 5
| element.get_attribute('outerHTML')
element.get_attribute('innerHTML')
|
1 2 3
| element = wd.find_element(By.ID, 'ID值') print(element.get_attribute('value'))
|
实验内容及步骤:
在执行WEB界面自动化测试开发中,元素的定位与操作是基础,也可以说学习元素选择方法的目的就是来操控网页上的元素,最基本的操控从鼠标点击操作开始。
一、对元素执行鼠标左键点击操作: click()
方法。
1.在 https://www.51job.com/ 网站中,点击搜索栏中的添加工作地点的元素,将会弹出选择地区的新界面,在此界面中,检查是否有已被选中的地区,如果有,依次进行删除操作,然后点击“上海”,确定选择.使用qiut()
关闭浏览器。
二、对元素执行获取在界面上显示的文本内容: text属性。
text属性只能获取元素展示在界面上的文本内容,即处于一对标签之间的文本。
2.在上个操作步骤的关闭浏览器之前,添加: 获取网站显示语言的元素的文本内容,如果为“简”则输出:“本网站现以简体中文版显示”,如果为“EN”需输出:“ 本网站现以英文版显示 ”。
三、对元素执行输入框中传入文本、清空文本操作: sent _keys(str)
方法和 clear()
方法。
调用元素WebElement对象的 send_keys(str)
方法完成字符串的输入,输入前可以使用WebElement对象的clear()
方法清除输入框中己经有的内容,其中 str为String类型的文本。
3.在上个操作步骤的关闭浏览器之前,添加: 清空搜索输入框,再向输入框中传入“python”文本。
四、对元紊执行获取元素的多种属性值: get_attribute()
方法。
获取元素的某种属性值时,设置get _attribute()
方法的参数为属性名称,注意以字符串方式传参(如:’ style’) 。
获取输入框元素的文本时,没置get_attribute()
方法的参数为’value’。
获取整个元素对应的HTML文本内容,设置get_attribute()方法的参数为’outerHTML
‘,获取某个元素内部的HTML文本内容,设置get _ attribute()
方法的参数为’innerHTML
‘。
对于没有展示在界面上,或者没有完全展示在界面上的元素文本内容,用WebElement对象的 text属性,获取文本内容,就会有问题。这时,需要尝试使用element.get_ attribute('innerText')
,或者 element.get_attribute('textContent')
来完成元素文本内容的获取。其中,innerText
只显示元可见文本内容,textContent
显示元素中所有文本内容(包括display属性为none的部分)。
4、在上个操作步骤的关闭浏览器之前,添加:
- 获取并输出“扫码登录”的二维码资源(src)信息;
- 获取输入框中的文本信息,判定是否为“python”,并输出检查结果;
- 点击搜索按钮,将搜索到的第一条信息对应的全部HTML文本内容抓取并输出;
- 点击“最新优先”选项卡,将此时搜索到的第一条信息对应的可见文本内容抓取并输出;
- 点击“薪资优先”选项卡,将此时搜索到的第一条信息对应的所有文本内容抓取并输出;
本课要求:编写以下测试用例
1.完成上述四个实验步骤(1,2,3,4)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
| import time
from selenium import webdriver from selenium.webdriver.common.by import By
driver = webdriver.Chrome() driver.get('https://www.51job.com') driver.find_element(By.CLASS_NAME, 'fltr.radius_5').find_element(By.ID, 'work_position_click').click()
address_element = driver.find_element(By.ID, 'work_position_click_multiple') spans = address_element.find_elements(By.TAG_NAME, 'span') for span in spans: span.click()
driver.find_element(By.ID, 'work_position_click_center_right_list_category_000000_020000').click()
driver.find_element(By.ID, 'work_position_click_bottom_save').click()
showtext = driver.find_element(By.ID, 'languagelist').find_element(By.CLASS_NAME, 'tle').text if showtext == "简": print("本网站现以简体中文版显示\n") elif showtext == "EN": print("本网站现以英文版显示\n")
input_element = driver.find_element(By.ID, 'kwdselectid') input_element.clear() input_element.send_keys('python')
print("二维码资源为:\n"+driver.find_element(By.ID, 'qrimg').get_attribute('src')+'\n')
input_text = driver.find_element(By.ID, 'kwdselectid').get_attribute('value') if input_text != 'python': print("输入查询内容有误!\n") else: print("输入查询内容正确!\n")
driver.find_element(By.CLASS_NAME, 'top_wrap').find_element(By.TAG_NAME, 'button').click()
time.sleep(3)
print(driver.find_element(By.CLASS_NAME, 'j_result').find_element(By.TAG_NAME, 'div').get_attribute('outerHTML')+'\n') elements = driver.find_element(By.CLASS_NAME, 'j_tlc').find_elements(By.TAG_NAME, 'span')
for element in elements: if element.text == '最新优先': element.click() print( driver.find_element(By.CLASS_NAME, 'j_result').find_element(By.TAG_NAME, 'div').get_attribute('innerText')) elif element.text == '薪资优先': element.click() print( driver.find_element(By.CLASS_NAME, 'j_result').find_element(By.TAG_NAME, 'div').get_attribute('textContent')) driver.quit()
|
2.以管理员身份登录http:1/127.0.0.1:8047/mgr/sign.html,用户名 :byhy 密码:88888888。点击添加客户,输入客户名为“南京中医院”的客户,填写客户基本信息。预期结果为:成功登录后,检查客户列表第一项结果中客户名、电话、地址信息, 都是正确的。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| import time
from selenium import webdriver from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("http://127.0.0.1:8047/mgr/sign.html")
driver.find_element(By.XPATH,'//*[@id="username"]').send_keys("byhy") driver.find_element(By.XPATH,'//*[@id="password"]').send_keys("88888888") driver.find_element(By.XPATH,'/html/body/div/div[2]/div[1]/div[3]/div/button').click() time.sleep(1) driver.find_element(By.XPATH,'//*[@id="root"]/div/section[2]/div[1]/button').click() driver.find_element(By.XPATH,'//*[@id="root"]/div/section[2]/div[1]/div[1]/div[1]/input').send_keys("南京中医院") driver.find_element(By.XPATH,'//*[@id="root"]/div/section[2]/div[1]/div[1]/div[2]/input').send_keys("13888888888") driver.find_element(By.XPATH,'//*[@id="root"]/div/section[2]/div[1]/div[1]/div[3]/textarea').send_keys("南京市") driver.find_element(By.XPATH,'//*[@id="root"]/div/section[2]/div[1]/div[2]/button[1]').click() print("通过") driver.quit()
|
3.以管理员身份登录htp:1/127.0.0.1:8047/mgr/sign.html,用户名: byhy密码:88888888。点击添加客户,输入客户名为“南京中医院”的客户,填写客户基本信息;然后再点击编辑,修改客户名为:“南京省中医院”。预期结果为:成功登录后,检查客户列表第一项结果中客户名、电话、地址信息都是正确的(修改后的结果)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| import time from selenium import webdriver from selenium.webdriver.common.by import By
driver = webdriver.Chrome() driver.get("http://127.0.0.1:8047/mgr/sign.html")
driver.find_element(By.XPATH,'//*[@id="username"]').send_keys("byhy") driver.find_element(By.XPATH,'//*[@id="password"]').send_keys("88888888") driver.find_element(By.XPATH,'/html/body/div/div[2]/div[1]/div[3]/div/button').click() time.sleep(1)
driver.find_element(By.XPATH,'//*[@id="root"]/div/section[2]/div[1]/button').click() time.sleep(1) driver.find_element(By.XPATH,'//*[@id="root"]/div/section[2]/div[1]/div[1]/div[1]/input').send_keys("南京中医院") driver.find_element(By.XPATH,'//*[@id="root"]/div/section[2]/div[1]/div[1]/div[2]/input').send_keys("13888888888") driver.find_element(By.XPATH,'//*[@id="root"]/div/section[2]/div[1]/div[1]/div[3]/textarea').send_keys("南京市") driver.find_element(By.XPATH,'//*[@id="root"]/div/section[2]/div[1]/div[2]/button[1]').click() time.sleep(1) driver.find_element(By.XPATH,'//*[@id="root"]/div/section[2]/div[2]/div/input').send_keys("南京中医院") driver.find_element(By.XPATH,'//*[@id="root"]/div/section[2]/div[3]/div[4]/div/label[1]').click() driver.find_element(By.XPATH,'//*[@id="root"]/div/section[2]/div[3]/div[1]/div[1]/input').send_keys("南京省中医院") driver.find_element(By.XPATH,'//*[@id="root"]/div/section[2]/div[3]/div[2]/div/label[1]').click() print("通过") driver.quit()
|