欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

关于python的元素定位问题实例讲解

程序员文章站 2022-07-05 23:29:27
关于python的元素定位问题实例讲解。 webdriver 提供了一系列的元素定位方法,常用的有以下几种 id...

关于python的元素定位问题实例讲解。

webdriver 提供了一系列的元素定位方法,常用的有以下几种

id                                  find_element_by_id()

name                           find_element_by_name()

class name                find_element_by_class_name()

tag name                    find_element_by_tag_name()

link text                        find_element_by_link_text()

partial link text           find_element_by_partial_link_text()

xpath                           find_element_by_xpath()

css selector              find_element_by_css_selector()

id=”gs_htif0”
find_element_by_id("gs_htif0")

name=”btnK”
find_element_by_name("btnK")

class=”jhp_big”
find_element_by_class_name("jhp_big")

通过tag 标签名对对元素进行定位:
<p>
find_element_by_tag_name("p")
<form>
find_element_by_tag_name("form")
<input>
find_element_by_tag_name("input")

通过link text 定位元素:
find_element_by_link_text("新闻")
find_element_by_link_text("贴吧")
find_element_by_link_text("一个很长的文字连接")
通partial link text 也可以定位到上面几个元素:
find_element_by_partial_link_text("新")
find_element_by_partial_link_text("吧")
find_element_by_partial_link_text("一个很长的")

用绝对路径定位:
find_element_by_xpath("/html/body/p[2]/form/span/input")

相对路径定位:
find_element_by_xpath("//input[@id=’input’]") #通过自身的id 属性定位
find_element_by_xpath("//span[@id=’input-container’]/input") #通过上一级目录的id 属性定位
find_element_by_xpath("//p[@id=’hd’]/form/span/input") #通过上三级目录的id 属性定位
find_element_by_xpath("//p[@name=’q’]/form/span/input")#通过上三级目录的name 属性定位

通过上面的例子,我们可以看到XPath 的定位方式非常灵活和强大的,而且XPath 可以做布尔逻辑运算,
例如://p[@id=’hd’ or @name=’q’]

from selenium.webdriver.common.keys import Keys
在使用键盘按键方法前需要先导入keys 类包。
下面经常使用到的键盘操作:
send_keys(Keys.BACK_SPACE) 删除键(BackSpace)
send_keys(Keys.SPACE) 空格键(Space)
send_keys(Keys.TAB) 制表键(Tab)
send_keys(Keys.ESCAPE) 回退键(Esc)
send_keys(Keys.ENTER) 回车键(Enter)
send_keys(Keys.CONTROL,'a') 全选(Ctrl+A)
send_keys(Keys.CONTROL,'c') 复制(Ctrl+C)
send_keys(Keys.CONTROL,'x') 剪切(Ctrl+X)
send_keys(Keys.CONTROL,'v') 粘贴(Ctrl+V)