• Java + selenium 元素定位(2)之By LinkText/PartialLinkText


           本章介绍的两种方法都是对于网页上的文字链接的定位操作。根据名字,我们就可以看出来,这两者其实很相似,那么他们的不同在哪里呢。

           By LinkText()方法,是对一个的网页超链接,我们所需要输入的关键字为该超链接的所有文字。

           By PartialLinkText()方法,看到part这个单词我们就可以知道,当这个文字超链接太长时,我们不想输入那么多的字,就可以调用这个方法,主要输入属于这个超链接文字的部分就可以了。当然,为了防止因为文字出现位置太多,定位失败,建议选择的字符要有唯一性。

            这里接着使用百度首页为例子,例子为图中红框内容,代码展示如下:

    import org.openqa.selenium.By;
    
    import org.openqa.selenium.WebDriver;
    
    import org.openqa.selenium.chrome.ChromeDriver;
    
     
    
     
    
    public class FindElement_LinkText {
    
        
    
    public static void main(String[] args) throws Exception {
          
            System.setProperty("webdriver.chrome.driver", ".\Tools\chromedriver.exe");
    
            WebDriver driver = new ChromeDriver();
    
            driver.manage().window().maximize();  
    
            driver.get("https://www.baidu.com");
    
            //By linkText 查找元素
            driver.findElement(By.linkText("新闻")).click();
            Thread.sleep(1000);
    //返回百度首页
    driver.navigate().back();
    Thread.sleep(1000);
    //By PartialLinkText 查找元素 driver.findElement(By.partialLinkText("设为主页")).click(); } }

          代码中出现的Thread.sleep(),是停顿的意思,括号中的数字单位为ms。加上这段代码是为了保证整个程序的可执行性。因为在实际操作做,经常出现代码报错,说定位不到元素。后来经过个方面的查证,发现不是元素定位错了,而是因为在页面跳转的时候,可能加载速度比较慢,跟不上代码执行速度,导致的元素定位失败。所以在出现页面跳转或者转变的时候,都建议在该行代码下加一个Thread.sleep()操作,让代码等待页面加载完成之后再执行,可以避免出现这种以为网页加载慢导致的元素定位失败错误。

  • 相关阅读:
    bzoj 2084: Antisymmetry 回文自动机
    bzoj 1819: 电子字典 Trie
    bzoj 1398: 寻找主人 AC自动机+最小表示法
    bzoj 4199: [Noi2015]品酒大会 后缀树
    bzoj 4044: Virus synthesis 回文自动机
    信用风险评分卡研究-第4章笔记
    信用风险评分卡研究-第3章笔记
    信用风险评分卡研究-第2章笔记
    信用风险评分卡研究-第1章笔记
    评分卡建模流程目录
  • 原文地址:https://www.cnblogs.com/zhuxiangru/p/9539619.html
Copyright © 2020-2023  润新知