Selenium定位问题,用CSS,ID,name或xpath都行,怎么定位这个button.

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Selenium定位问题,用CSS,ID,name或xpath都行,怎么定位这个button.相关的知识,希望对你有一定的参考价值。

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;

import org.openqa.selenium.By;

public class ByClassName 

    public static void main(String[] args) 
    
         WebDriver driver = new FirefoxDriver();
         driver.get(
);
         WebElement element = driver.findElement(By.className("cpBtn-zj"));
         System.out.println(element.getTagName());

    

参考这一段java代码,关键是你这个控件需要使用className来定位。

追问

谢谢,可俺试了下,还是定位不到,不知道是不是套的太多,还是怎么的。

追答

使用xpath定位试试
//form[@id='mainForm']//div[@class='cpBtn']//input[@class='cpBtn-z']

参考技术A

java-selenium

    这里有iframe,需要切到iframe中去:

    iframe相当于嵌入网页,就好比你在大厅,你要去拿卧室的东西,你得打开卧室的门进去拿,在大厅是拿不到卧室里面的东西的,反之亦然,大厅的东西也需要先走出卧室才能拿得到。

    driver.swithTo().frame("ife_linkwin183402");

    然后再用正常的定位语句去获取元素:

    driver.findElement(By.xpath("//input[@class="cpBtn-zj"])").click();  

    input是标签,class是属性,等于号后面是值。按照这个模式,你也可以应用到其它的元素定位中去,甚至是封装一个方法,以此来简化你的代码长度,使之更直观、简便。

    再就是,切回大厅:

    driver.swithTo().defaultcontent();

python-selenium

    切换iframe:deiver.swith_to_iframe("ife_linkwin183402")

    定位:driver.find_Element_by_xpath(//input(@class="cpBtn-zj")).click()

    切出去:driver.switch_to.default_iframe() 或者切到上一级:driver.switch_to.parent_ifame()

Selenium入门

一.Selenium操作原理

二.元素定位方式

Selenium提供了8种定位方式

  1. id定位:
  2. class定位
  3. Name定位(name元素一般不唯一,可通过getindex下标或for循环遍历获取)
  4. Tagname定位
  5. xpath定位
  6. css定位
  7. linkText定位(根据text文本内容进行定位)
  8. partial_link定位(模糊文本定位)

1. 当页面元素有id属性时,最好尽量用id来定位。但由于现实项目中很多程序员其实写的代码并不规范,会缺少很多标准属性,这时就只有选择其他定位方法。

 

2. xpath很强悍,但定位性能不是很好,当脚本存在大量xpath定位时速度会缓慢,所以还是尽量少用。如果确实少数元素不好定位,可以选择xpathcss

 

3. 当要定位一组元素相同元素时,可以考虑用tagNamename

 

4. 当有链接需要定位时,可以考虑linkTextpartialLinkText方式。

 

三.iframe切换

四.句柄切换

五.键盘,鼠标模拟操作

六.JS操作

七.弹窗处理

八.元素等待

九.TestNg框架

十.分层思想

十一.持续集成

 

自动化计划

有时时间有限且需要做的事情太多,尽早地提供一个可实施的自动化测试计划是一个很好的解决方法。试图在一个测试套件中自动化所有端到端的测试用例,这是一个常见的错误自动化计划必须合情合理且有影响力。自动化上投入的越多,维护的成本也就越大。在系统升级变化时,自动化也会更加不稳定。规模更小且目的性更强的自动化计划,并存在可以提供帮助的测试框架。在端到端的自动化测试上过度投入,常常会把你与产品的特定功能设计绑定在一起,这部分测试在整个产品稳定之前都不会特别有用。在产品完成之后,这个时候如果去修改设计就已经太晚了。所以,这个时刻从测试中得到的任何反馈也将变得毫无意义。 SET的时间,本应投入在提高质量方面,却白白地花费在维护这些不稳定的端到端测试套件上。

以上是关于Selenium定位问题,用CSS,ID,name或xpath都行,怎么定位这个button.的主要内容,如果未能解决你的问题,请参考以下文章

selenium定位相关经验

Selenium中怎么实现元素定位?

selenium---定位

selenium定位方法

selenium+python怎么用css定位

Selenium之css怎么实现元素定位?