【问题标题】:Webdriver doesnt click on Google SearchWebdriver 没有点击 Google 搜索
【发布时间】:2018-06-27 06:47:11
【问题描述】:

这是一个非常简单的脚本,但我需要帮助。

当没有为键入的文本列出建议时(例如 macintosh),网络驱动程序会单击 google 搜索按钮。但是当出现建议时,我如何仍然让 webdriver 点击 Google Search 按钮。 我的代码如下:

package newProj;

import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;

import org.openqa.selenium.remote.RemoteWebDriver;


public class Google {


public static void main(String[] args) throws InterruptedException {



    System.setProperty("webdriver.chrome.driver", "./drivers/chromedriver.exe");

    RemoteWebDriver driver = new ChromeDriver();

    driver.get("http://www.google.com");
    driver.manage().window().maximize();
    driver.findElementById("lst-ib").sendKeys("macintosh");

    WebElement gs = driver.findElementByXPath("//input[@value = 'Google Search']");

    gs.click();
    System.out.println("Search Done");

    driver.close();
}

}

但出现以下错误。请帮忙

在端口 3288 上启动 ChromeDriver 2.40.565498 (ea082db3280dd6843ebfb08a625e3eb905c4f5ab) 仅限本地 允许连接。 2018 年 6 月 27 日 12:14:37 org.openqa.selenium.remote.ProtocolHandshake createSession 信息: 检测到的方言:OSS true 线程“main”中的异常 org.openqa.selenium.WebDriverException:未知错误:元素在点(598、411)不可点击。 其他元素会收到点击:...
(会话信息:chrome=67.0.3396.87)(驱动程序信息: 铬驱动程序=2.40.565498 (ea082db3280dd6843ebfb08a625e3eb905c4f5ab),平台=Windows NT 10.0.15063 x86_64)(警告:服务器未提供任何堆栈跟踪信息)命令持续时间或超时:0 毫秒构建信息: 版本:'3.12.0',修订:'7c6e0b3',时间: '2018-05-08T15:15:03.216Z' 系统信息:主机:'HDC0007030',ip: '10.50.90.19', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_73' 驱动信息: org.openqa.selenium.chrome.ChromeDriver 功能 {acceptInsecureCerts:假,acceptSslCerts:假, applicationCacheEnabled:假,browserConnectionEnabled:假, 浏览器名称:铬,铬:{chromedriverVersion:2.40.565498 (ea082db3280dd6..., userDataDir: C:\Users\CSS116~1\AppData\L...}, cssSelectorsEnabled:true,databaseEnabled:false,handlesAlerts: 真,hasTouchScreen:假,javascriptEnabled:真, locationContextEnabled:真,mobileEmulationEnabled:假, nativeEvents:true,networkConnectionEnabled:false,pageLoadStrategy: 正常,平台:XP,平台名称:XP,可旋转:false, setWindowRect:真,takeHeapSnapshot:真,takeScreenshot:真, 意外警报行为:,未处理的提示行为:,版本: 67.0.3396.87,webStorageEnabled:true} 会话 ID:f4700c020ed7f67bd9e46a3c70fb4b02 在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 在 java.lang.reflect.Constructor.newInstance(Constructor.java:422) 在 org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:214) 在 org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:166) 在 org.openqa.selenium.remote.http.JsonHttpResponseCodec.reconstructValue(JsonHttpResponseCodec.java:40) 在 org.openqa.selenium.remote.http.AbstractHttpResponseCodec.decode(AbstractHttpResponseCodec.java:80) 在 org.openqa.selenium.remote.http.AbstractHttpResponseCodec.decode(AbstractHttpResponseCodec.java:44) 在 org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:158) 在 org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83) 在 org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:543) 在 org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:276) 在 org.openqa.selenium.remote.RemoteWebElement.click(RemoteWebElement.java:83) 在 newProj.Google.main(Google.java:33)

【问题讨论】:

    标签: selenium-webdriver xpath


    【解决方案1】:

    driver.navigate().to("http:\google.com");

        driver.findElement(By.cssSelector("input[title='Search']")).sendKeys("sele");
    
        List<WebElement> list=driver.findElements(By.xpath("//*[@class='sbsb_b']/li[*]"));
    
        Iterator<WebElement> itr=list.listIterator();
        while(itr.hasNext()){
    
            WebElement element=itr.next();
    
            if(element.getText().equalsIgnoreCase("selenium webdriver")){
    
                element.click();
                break;
            }
        }
    

    【讨论】:

    • 嗨...感谢您的输入...我实际上并不想点击任何建议...以您为例,我想在搜索框中输入“sele”并然后点击谷歌搜索按钮(即使出现了建议)。当没有建议时它对我有用,但是当出现建议时,它不会点击 Google 搜索按钮。
    【解决方案2】:

    这是一个小错误。将click() 替换为submit(),如下所示-

    WebElement gs = driver.findElementByXPath("//input[@value = 'Google Search']");
    
    gs.submit(); 
    

    它会起作用的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-13
      • 2016-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-27
      相关资源
      最近更新 更多