这几天,学习了网页几个常用的控件:Radio,Checkbox,Link,ComboBox
应用Selenium+python+webdriver实现。
今天,终于会使用如何将图片放到内容里面。
Radio控件
测试案例:进入网页,判断是否能够选中“Female”选项。
1.测试对象定位
选择Female的Radio,然后定位在Radio,鼠标右键“审查元素”,得到:
通过上面的源代码,可以得知Radio的属性:name,value
同时还可以得到xpath=”//*[@id=”wrapper”]/table[2]/tbody/tr[25]/td[3]/input[1]”
(XPath通过右键“复制XPath”得到)
2.可以使用name,xpath对Female进行定位
find_element_by_name(“gender6ae85d7b”)
find_element_by_xpath(“//*[@id=’wrapper’]/table[2]/tbody/tr[25]/td[3]/input[1]”)
find_element_by_css_selector(“input[value]=m”)
选取测试对象的定位时,注意测试对象的定位的唯一性。这有可能需要逐一试试。
3.测试脚本
脚本功能如下:
1)进入网页
2)判断是否选中Female选项
from selenium import webdriver
from selenium.webdriver.support.ui import Select
import time
url="https://register.rediff.com/register/register.php"
browser=webdriver.Chrome()
browser.get(url)
time.sleep(3)
browser.maximize_window()
try:
radio=browser.find_element_by_xpath("//*[@id='wrapper']/table[2]/tbody/tr[25]/td[3]/input[1]")
if radio.is_selected():
print ("radio is selected..now please deselected")
radio.click()
else:
print("radio is not selected...now please selected")
checkbox.click()
browser.close()
except Exception as e:
print ("Exception occured", format(e));
finally:
browser.quit()
print ("It's OK")
按F5运行,得到结果:
radio is selected..now please deselected
It’s OK.
4.对于上面的脚本,若将
radio=browser.find_element_by_xpath(“//*[@id=’wrapper’]/table[2]/tbody/tr[25]/td[3]/input[1]”)
改为
radio=browser.find_element_by_name(“gender6ae85d7b”)
最后却得到结果:
Exception occured Message: no such element
(Session info: chrome=44.0.2403.125)
(Driver info: chromedriver=2.9.248315,platform=Windows NT 6.1 x86_64)
It’s OK.
这是因为选择name作为定位,不被识别。于是,需要采用xpath作为定位。
5.使用try except finally 是为了跟踪防止意外的情况,给出原因分析。
Checkbox控件
测试案例:进入网页,判断是否能够点击标签 Click if you don’t have an alternate ID的checkbox选项,如图所示:
1.定位测试控件,鼠标右键“审查元素”。可得到如图所示:
通过上图,可以得到name=”chk_altermail8c817b57”
class=”nomargin”
按理说,可以使用find_element_by_class_name(“nomargin”)或者
find_element_by_name(“chk_altermail8c817b57”) 但实际上,由于不同时期打开相同网页,class与name的显示不相同,就可能导致报错。
技巧:在对测试控件选择定位时候,最好选它的属性是唯一标识显示的。这个可以在你打开几个相同的网页,对某个测试对象进行定位的时候,你会发现某个对象的属性定位是唯一的,比 如上所述的name和class,class是在几个不同时期打开的网页中,显示的是相同的。那么,基于此,最好选择class作为定位。
即选择 find_element_by_class_name(“nomargin”) ,如果选择f
find_element_by_name(“chk_altermail8c817b57”)可能会出现这样”no such elment….”的报错。
2.测试脚本:
from selenium import webdriver
from selenium.webdriver.support.ui import Select
import time
url="https://register.rediff.com/register/register.php"
browser=webdriver.Chrome()
browser.get(url)
time.sleep(3)
browser.maximize_window()
try:
checkbox=browser.find_element_by_class_name("nomargin")
if checkbox.is_selected():
print ("checkbox is selected..now please deselected")
checkbox.click()
else:
print("checkbox is not selected...now please selected")
checkbox.click()
browser.close()
except Exception as e:
print ("Exception occured", format(e));
finally:
browser.quit()
print ("It's OK.")
F5运行,得到结果:
checkbox is selected..now please deselected
It’s OK.
Link 控件
测试案例:进入网页后,点击Home链接
1.对于Link控件主要是使用text来进行定位。
其中,Home 是链接的名称,如图所示:
2.测试对象定位
定位方法与Checkbox方法类似,得到
于是得到,class=“f12”text=”Home”
find_element_by_class_name(“f12”)
find_element_by_link_text(“Home”)
3.测试脚本:
from selenium import webdriver
import time
browser=webdriver.Chrome()
url="https://register.rediff.com/register/register.php"
browser.get(url)
browser.maximize_window()
try:
link=browser.find_element_by_link_text("Home")
link.click()
time.sleep(5)
browser.close()
except Exception as e:
print("Exception occured",format(e))
finally:
print ("It's OK.")
time.sleep(4)
browser.quit()
F5运行,得到:
It’s OK.
Combobox控件
测试案例:进入网页,选择county中的”China“,如图所示:
1.对测试控件进行定位,鼠标右键“审查元素”,得到如图所示:
从上图片可以看到 id=”country”, name=”country8c817b57”
于是,可以使用find_element_by_id(“country”)
find_element_by_name(“country8c817b57”)
2.测试脚本:
from selenium import webdriver
from selenium.webdriver.support.ui import Select
browser = webdriver.Chrome()
browser.get("http://register.rediff.com/register/register.php")
browser.maximize_window()
try:
select=Select(browser.find_element_by_id('country'))
select.select_by_visible_text("China")
browser.close()
except Exception as e:
print("Exception occured", format(e))
finally:
browser.quit()
print ("It's OK.")
F5运行,得到结果:
It’s OK.
若select=Select(browser.find_element_by_id(‘country’))
改为
select=Select(browser.find_element_by_name(“country8c817b57”))
则F5运行后,得到:
Exception occured Message: no such element
(Session info: chrome=44.0.2403.125)
(Driver info: chromedriver=2.9.248315,platform=Windows NT 6.1 x86_64)
这是因为元素定位出错。