【问题标题】:selenium webdriver using firefox for google search/selenium testingselenium webdriver 使用 firefox 进行谷歌搜索/硒测试
【发布时间】:2018-09-10 16:51:35
【问题描述】:

我正在尝试先打开 google.com,然后输入“selenium testing”。

我只想在使用 eclipse 的 webdriver 中使用 className,但出现以下错误。

Exception in thread "main" 
   org.openqa.selenium.NoSuchElementException: Unable to locate element: 
   {"method":"class name","selector":"Tg7LZd"}
   Command duration or timeout: 37 milliseconds

这是我的代码:

package coreJava;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

public class Training1 {
    public static void main(String[] args) {
        WebDriver driver = new FirefoxDriver();
        driver.get("http://www.google.com");
        driver.findElement(By.className("gLFyf")).sendKeys("selenium testing");     
        driver.findElement(By.className("Tg7LZd")).click();
    }
}

我该如何解决这个问题?

【问题讨论】:

    标签: selenium google-chrome selenium-webdriver webdriver selenium-chromedriver


    【解决方案1】:

    此错误消息...

    org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"class name","selector":"Tg7LZd"}
    

    ...暗示 GeckoDriver 无法根据您使用的Locator Strategy 找到任何元素。

    您的主要问题是您使用的 classNames 基于JavaScript 并且是动态生成的,我们在生成之前无法猜测。 作为替代方案,您可以使用以下解决方案:

    package coreJava;
    
    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.firefox.FirefoxDriver;
    
    public class Training1 {
        public static void main(String[] args) {
            WebDriver driver = new FirefoxDriver();
            driver.get("http://www.google.com");
            WebElement myElement = driver.findElement(By.name("q"));  
            myElement.sendKeys("selenium testing");
            myElement.submit();
        }
    }
    

    【讨论】:

      【解决方案2】:
      System.setProperty("webdriver.gecko.driver", "geckodriver");
      FirefoxDriver driver = new FirefoxDriver();
      
      driver.get("https://google.com");
      Thread.sleep(3);
      
      driver.findElement(By.className("gsfi")).sendKeys("selenium testing");
      Thread.sleep(3);
      
      driver.findElement(By.className("sbqs_c")).click();
      Thread.sleep(3);
      
      driver.close(); 
      

      这是工作代码

      。 这些将打开谷歌浏览器,然后在搜索框中写“硒测试”,然后使用类进行搜索。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-05-06
        • 2014-10-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多