Python+Selenium+Unittest框架使用——Selenium——定位元素(二)

1、定位元素(id、name、class、link、partial link)

(1)find_element_by_id()

用百度定位测试,用firebug查看定位元素 ,输入框的id为“kw”,【百度一下】按钮的id为“su”。

from selenium import webdriver                            #导入selenium的webdriver包
driver = webdriver.Firefox()
driver.get("https://www.baidu.com")
driver.find_element_by_id("kw").send_keys("python")       #输入框输入“python”
driver.find_element_by_id("su").click()            #点击【百度一下】按钮

 (2)find_element_by_name()

用百度定位测试,用firebug查看定位元素 ,输入框的name为“wd”,【百度一下】按钮没有name属性,这里用id定位,id为“su”。

from selenium import webdriver                          #导入selenium的webdriver包
driver = webdriver.Firefox()
driver.get("https://www.baidu.com")
driver.find_element_by_name("wd").send_keys("python")     #输入框输入“python”
driver.find_element_by_id("su").click()                  #点击【百度一下】按钮

(3)find_element_by_class_name()

百度的class属性值是包含空格,用class无法定位百度。这里我改用bing搜索为测试实例,用firebug查看定位元素 ,输入框的class为“b_searchbox”,搜索按钮的class为“”b_searchboxSubmit“”

from selenium import webdriver                                            #导入selenium的webdriver包
driver = webdriver.Firefox()
driver.get("https://cn.bing.com/")
driver.find_element_by_class_name("b_searchbox").send_keys("python")     #输入框输入“python”
driver.find_element_by_class_name("b_searchboxSubmit").click()           #点击【百度一下】按钮

(4)find_element_by_link_text()

find_element_by_link_text()是根据链接的文本来定位。以百度为定位测试,找百度页面“新闻”这个元素

from selenium import webdriver                          #导入selenium的webdriver包
driver = webdriver.Firefox()
driver.get("https://www.baidu.com")
driver.find_element_by_link_text("新闻").click()        #打开新闻链接

(5)find_element_by_partial_link_text()

find_element_by_partial_link_text()是根据链接的文本包含某个字符来定位。以百度为定位测试,找百度页面“新闻”中的“闻”:

from selenium import webdriver                          #导入selenium的webdriver包
driver = webdriver.Firefox()
driver.get("https://www.baidu.com")
driver.find_element_by_partial_link_text("").click()   #打开新闻链接

 2、xpath定位元素

(1)通过绝对路径定位。一般很少用这种绝对路径定位,除非其他定位元素无法准确定位,才会用到。

用百度定位测试,用firebug和firepath查看定位元素 ,输入框的绝对路径为“html/body/div[1]/div[1]/div/div[1]/div/form/span[1]”,【百度一下】按钮的绝对路径为“html/body/div[1]/div[1]/div/div[1]/div/form/span[2]/input”。

from selenium import webdriver                          #导入selenium的webdriver包
driver = webdriver.Firefox()
driver.get("https://www.baidu.com")
driver.find_element_by_xpath("html/body/div[1]/div[1]/div/div[1]/div/form/span[1]").send_keys("python")     #输入框输入“python”
driver.find_element_by_xpath("html/body/div[1]/div[1]/div/div[1]/div/form/span[2]/input").click() 

通过以上代码去执行,找不到输入框位置。是因为输入框定位位置不准确。firebug和firepath只是辅助工具,会有出错,需要更新手动定位。

所以输入框的绝对路径为“html/body/div[1]/div[1]/div/div[1]/div/form/span[1]/input”,【百度一下】按钮的绝对路径为“html/body/div[1]/div[1]/div/div[1]/div/form/span[2]/input”。

from selenium import webdriver                          #导入selenium的webdriver包
driver = webdriver.Firefox()
driver.get("https://www.baidu.com")
driver.find_element_by_xpath("html/body/div[1]/div[1]/div/div[1]/div/form/span[1]/input").send_keys("python")     #输入框输入“python”
driver.find_element_by_xpath("html/body/div[1]/div[1]/div/div[1]/div/form/span[2]/input").click() 

猜你喜欢

转载自www.cnblogs.com/zjhhzs/p/10615572.html