selenium(一):元素定位

selenium是一种进行自动化测试的工具,在python也可以使用来进行自动化测试。

selenium可以肤浅的理解为:一个网页,模拟人的各种操作,比如点击按钮,输入信息等等。我们今天就来说说如何定位我们要点击的按钮,或者是要输入信息的信息框

-----------------------------------------------------------------------------------------------------

browser.find_element_by_css_selector()
这个经常用到:CSS是一种描述html和xml的语言,我觉得用这种方式定位元素最方便,因为查找元素的CSS位置很方便,只要打开浏览器,在我想要的元素位置点击右键,审查元素,然后在firefox浏览器的上端,Google chrome浏览器的下端,就会出现元素的CSS代码,直接复制这个,就可以使用了
<input id="kw" class="s_ipt" type="text" maxlength="100" name="wd" autocomplete="off">
---------------------------------------------------------------------------------------------------
browser.find_element_by_id()
这个就是网页查看源代码,我们在源代码中看到的那个id
---------------------------------------------------------------------------------------------------
browser.find_element_by_tag_name()
browser.find_element_by_tag_name("input")
---------------------------------------------------------------------------------------------------
browser.find_element_by_class_name()
browser.find_element_by_class_name("s_ipt")
---------------------------------------------------------------------------------------------------
browser.find_element_by_link_text()
ok = webdriver.Firefox()
ok.get("http://www.baidu.com")
ok.find_element_by_link_text("贴吧").click()
---------------------------------------------------------------------------------------------------
browser.find_element_by_name()
browser.find_element_by_name("wd")
---------------------------------------------------------------------------------------------------
browser.find_element_by_partial_link_text()
ok = webdriver.Firefox()
ok.get("http://www.baidu.com")
ok.find_element_by_partial_link_text("贴").click()
---------------------------------------------------------------------------------------------------
browser.find_element_by_xpath()
ok = webdriver.Firefox()
ok.get("http://www.baidu.com")
ok.find_element_by_xpath("//input[@class='s_ipt']").send_keys(u"你好")
ok.find_element_by_xpath("//input[@type='submit']").click()
---------------------------------------------------------------------------------------------------

如果要寻找一类元素,我们就用到find_elements方法,这个方法会返回一个可叠代的list.

由于加载需要时间,所以当我们发送一个请求,然后需要在新出现的页面上处理元素的时候,就有可能由于没有完成加载而出现问题,这个时候,我们可以设置等待时间,但我觉得这样不好,我们可以用一个无限循环体来处理这个问题,例如:
while True:
try:
browser.find_element_by_css_selector("input.btn").click()
except:
print "input"
else:
break




原文地址:https://www.cnblogs.com/gongbo/p/5176865.html