selenium采用find_element_by方法识别页面元素

Posted ZhuQue

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了selenium采用find_element_by方法识别页面元素相关的知识,希望对你有一定的参考价值。

  主要是练习获取页面中的各元素,马克

 

 1 # coding:utf-8
 2 import time
 3 from selenium import webdriver
 4 import unittest
 5 from pythontest.commlib.baselib import *
 6 
 7 #引用封装后的日志系统
 8 log = TestLog().getlog()
 9 class BaiBu(unittest.TestCase):
10     u\'\'\'【百度.类】\'\'\'
11     def setUp(self):
12         self.browser = webdriver.Firefox()
13         self.browser.get("http://www.baidu.com")
14         self.browser.implicitly_wait(10)
15         #self.base = Screen(self.browser)
16 
17     def tearDown(self):
18         self.browser.quit()
19 
20     def test_search(self):
21         u\'\'\'采用id,class,name等属性识别元素\'\'\'
22         #<input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">
23         #<input id="su" value="百度一下" class="bg s_btn" type="submit">
24         #识别id属性
25         self.browser.find_element_by_id("kw").send_keys("python")
26         self.browser.find_element_by_id("su").submit()
27         print self.browser.title
28         self.assertEqual(self.browser.title,u"百度一下,你就知道")
29         log.info("识别id属性,执行[find_element_by_id]")
30 
31         time.sleep(3)
32 
33         #识别name属性 <input id="su" value="百度一下" class="bg s_btn" type="submit">
34         self.browser.find_element_by_name("wd").clear()     #清空原关键字
35         self.browser.find_element_by_name("wd").send_keys("python logging")
36         # class属性是比较特殊的一个,属性值可以有多个,中间是用空格隔开的
37         #self.browser.find_element_by_class_name("bg s_btn").submit()  #使用class_name会报错
38         #self.browser.find_element_by_class_name("s_btn").submit()      #第一种解决办法:class值取其中之一
39         #self.browser.find_element_by_class_name("bg").submit()          #第一种解决办法:class值取其中之一
40         self.browser.find_element_by_css_selector(".bg.s_btn").submit()          #第二种解决办法:使用css.selector,每个class值前面加.
41         log.info("识别name属性,执行[find_element_by_name]")
42         time.sleep(3)
43 
44         #识别class属性
45         self.browser.find_element_by_name("wd").clear()  # 清空原关键字
46         self.browser.find_element_by_class_name("s_ipt").send_keys("selenium webdriver")
47         self.browser.find_element_by_class_name("s_btn").submit()
48         log.info("识别class属性,执行[find_element_by_class_name]")
49         time.sleep(3)
50 
51     def test_xpath(self):
52         u\'\'\'采用xpath识别元素\'\'\'
53         self.browser.find_element_by_xpath(".//*[@id=\'kw\']").send_keys("xpath test")        #采用id
54         self.browser.find_element_by_xpath(".//*[@id=\'su\']").submit()           #采用id
55         log.info("采用xpath识别页面中的属性,[id]")
56 
57         self.browser.find_element_by_xpath(".//*[@name=\'wd\']").clear()  # 清空原关键字        #采用name
58         self.browser.find_element_by_xpath(".//*[@class=\'s_ipt\']").send_keys("selenium auto test")        #采用class
59         self.browser.find_element_by_xpath(".//*[@type=\'submit\']").submit()     #采用type
60         log.info("采用xpath识别页面中的属性,[class、type]")
61 
62 
63 
64 if __name__ == "__main__":
65     unittest.main()

运行结果:

以上是关于selenium采用find_element_by方法识别页面元素的主要内容,如果未能解决你的问题,请参考以下文章

Selenium / Python:无法使用任何find_element_by_ *方法查找元素

selenium弃用警告DeprecationWarning: find_element_by_* commands are deprecated. Please use find_element()

WebDriver 中的API 总结

Selenium-浮层的操作

selenium api

Selenium基本使用表单切换