编程技术文章分享与教程

网站首页 > 技术文章 正文

页面对象定位方法详解(四)

hmc789 2024-11-25 12:46:49 技术文章 2 ℃

我们继续来讲下页面对象的定位方法,本文主要讲css_selector的定位方法。那么讲css_selector其实和xpath一样,因为很多时候我们要定位的页面对象会没有id、name、class等属性,甚至也无法通过link text的方法定位,所以我们就需要用到css_selector,css_selector对于所有的对象定位都是适用的!1、find_element_by_css_selectorcss_selector定位其实和xpath是类似的,只是写法有一些差异而已,它也有绝对路径和相对路径的定位方法。1)绝对路径绝对路径也是从html根节点开始查找起,

那么我要定位这个输入框css的绝对路径写法如下:一般用两种,第一种(用>来分割层级):

  1. html>body>div>div>div>form>table>tbody>tr>td>input

复制代码第二种(用空格来分割层级):

  1. html body div div div form table tbody tr td input

复制代码具体代码实现如下:

  1. import time
  2. from selenium import webdriver

  3. driver = webdriver.Chrome()
  4. driver.get("http://www.bcbxhome.com")
  5. time.sleep(5)
  6. driver.find_element_by_css_selector("html>body>div>div>div>form>table>tbody>tr>td>input")
  7. driver.find_element_by_css_selector("html body div div div form table tbody tr td input").click()

复制代码2)相对路径比如我们可以看到要定位的输入框是有id的,我们可以直接写标签名称#id属性值

  1. input#scbar_txt

复制代码那么代码实现:

  1. import time
  2. from selenium import webdriver

  3. driver = webdriver.Chrome()
  4. driver.get("http://www.bcbxhome.com")
  5. time.sleep(5)
  6. driver.find_element_by_css_selector("input#scbar_txt")

复制代码当然你也可以只写#id属性值,不写标签名称,如下:

  1. #scbar_txt

复制代码如果要定位的控件有class,我们可以直接写标签名称.class属性值

  1. input.xg1

复制代码那么代码实现:

  1. import time
  2. from selenium import webdriver

  3. driver = webdriver.Chrome()
  4. driver.get("http://www.bcbxhome.com")
  5. time.sleep(5)
  6. driver.find_element_by_css_selector("input.xg1")

复制代码如果要定位的控件既没有id也没有class,那么我们可以通过其他属性定位,方法如下:

  1. input[name='srchtxt']

复制代码如果一个属性无法唯一确定到此控件,可以通过多个控件组合定位:

  1. input[value='请输入搜索内容'][type='text']

复制代码当然你要定的控件没有办法直接通过自身的属性定位,可以先定位父级,然后从父级定位到它!

比如要定位input,我们可以先定位到form然后就可以定位到input了

  1. form#scbar_form>table>tbody>tr>td>input

复制代码当然因为tr下有多个td我们也可以通过nth-child加索引定位到第二个td

  1. form#scbar_form>table>tbody>tr>td:nth-child(2)>input

复制代码代码实现就非常简单了:

  1. import time
  2. from selenium import webdriver

  3. driver = webdriver.Chrome()
  4. driver.get("http://www.bcbxhome.com")
  5. time.sleep(5)
  6. driver.find_element_by_css_selector("form#scbar_form>table>tbody>tr>td:nth-child(2)>input")

复制代码

Tags:

标签列表
最新留言