操控元素的基本方法

selenium操控元素的基本方法

**实验目的:**了解在 selenium中选择界面元素后操控的基础方法,能在PyCharm环境下使用sclenium 中 WebElement的相关函数实现元紊的.
**基本操控:**元素鼠标左键点击、输入框传入文本及清空文本、获取元素文本内容、获取元素各种属性值.

**实验要求:**在pycharm环境下完成实验目的中所述各项任务.

实验条件: win7/10、pycharm. selenium4.4.0 .

操控元素通常包括:

  • 点击元素
  • 在元素中输入字符串,通常是对输入框这样的元素
  • 获取元素包含的信息,比如文本内容,元素的属性

点击元素

点击元素 顾名思义,通过调用元素WebElement对象的click()方法,来实现点击这个动作。在调用方法的时候,浏览器收到自动化命令,默认点击所选元素的中间位置

selenium选择元素

我们要点击 更多 这个按钮,相当于点击右边这条相关链接。

输入框

要在输入框中输入字符串,需要调用元素WebElement对象的send_keys()方法。如果输入框中存在字符串,可以使用WebElement对象的clear()方法来将内容清除。

1
2
element.clear() # 清除已有字符串
element.send_keys('新字符串') # 输入新字符串

获取元素的信息

  • 获取元素的文本内容
  • 获取元素属性
  • 获取整个元素对应的HTML
  • 获取输入框里面的文字
1
2
3
4
5
6
7
8
# 通过WebElement对象的text属性获取文本内容
element = wd.find_element(By.ID, 'ID值')
print(element.text)
# 若文本内容没有完全展示在界面上,可以使用下面两种方式
element.get_attribute('innerText')
element.get_attribute('textContent')
# 区别在于 innerText只显示元素可见文本内容,textContent显示所有内容

1
2
3
4
5
# 通过WebElement对象的get_attribute方法来获取元素的属性值
element = wd.find_element(By.ID. 'ID值')
print(element.get_attribute('class'))
# 执行完自动化代码后,可以使用WebDriver对象的quit()方法关闭浏览器窗口
wd.quit()
1
2
3
4
5
# 要获取整个元素对应的HTML文本内容,可以使用 
element.get_attribute('outerHTML')

# 如果,只是想获取某个元素 内部 的HTML文本内容,可以使用
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()


操控元素的基本方法
http://example.com/2024/12/15/selenium/selenium01/
作者
Helios
发布于
2024年12月15日
许可协议