【问题标题】:Selenium Java Chrome can't click buttonSelenium Java Chrome 无法点击按钮
【发布时间】:2019-07-04 22:50:20
【问题描述】:

我正在学习 Selenium,我需要一些帮助。好的,我正在使用This 网站 。这是用例:

  1. 在搜索栏中输入文本(完成)
  2. 按搜索按钮。 (未完成)

我尝试使用 className 来单击按钮,但它不起作用

//then this method to search 

void invokeChrome(){
    try{
        System.setProperty("webdriver.chrome.driver", "D:\\software testing\\chromedriver.exe");
        web = new ChromeDriver();
        web.manage().deleteAllCookies();
        web.manage().window().maximize();
        web.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
        web.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);
        web.get("https://www.coursera.org");
    }catch(Exception e)
    {
        System.out.println(e.getMessage());
    }
}

我正在使用 Chromedrive 74 和 selenium:3.9.0 版本

【问题讨论】:

  • 你在运行测试时遇到compound class异常吗?
  • 是:org.openqa.selenium.InvalidSelectorException:无效选择器:不允许复合类名
  • @supputuri 有时我也会遇到此异常。对不起,我是 selenium 的新手,如果问一些蹩脚的问题:org.openqa.selenium.WebDriverException: java.net.SocketTimeoutException: timeout

标签: selenium selenium-chromedriver


【解决方案1】:

nostyle mobile-magnifier 不是一个单一的类,它有 2 个类,所以当你尝试使用 By.className 时,你会得到 compound class 异常。因此,使用 xpath 更改该行,如下所示。

Xpath:

 web.findElement(By.xpath("//button[@aria-label='Enter Search'] [2]")).click();

【讨论】:

  • 试试这个,让我知道你仍然得到例外。
  • 是的,我都试过了,它给了org.openqa.selenium.WebDriverException: java.net.SocketTimeoutException: timeout
  • 在搜索栏内写入文本后,它卡在那里并给出timeout异常
  • 知道了。有 2 个元素与 xpath 匹配,第一个元素被隐藏,因此我们无法单击它。尝试使用更新后的答案,它在 python 中对我有用。
  • 是的,它正在工作,非常感谢,你能推荐我哪种语言最适合进行硒测试。爪哇或蟒蛇。你也可以给我推荐一些好的链接来学习基础知识。我的目标是在 2 天内学习所有与硒相关的东西,这可能吗?
猜你喜欢
  • 2021-07-10
  • 2015-04-25
  • 2020-03-16
  • 1970-01-01
  • 1970-01-01
  • 2021-06-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多