【问题标题】:Selenium Firefox span tagSelenium Firefox 跨度标签
【发布时间】:2017-04-30 16:36:44
【问题描述】:

我在通过位于跨度中的 linkText 选择元素时遇到问题。在 Chrome 中它可以完美运行,但在 Firefox 中它由于某种原因无法正常工作,而且我已经好几个小时都无法理解它。我正在尝试按如下方式定位元素:login.wait.until(ExpectedConditions.elementToBeClickable(By.linkText("Kassa"))).click(); 但是它根本找不到它。我注意到位于上部导航栏中的所有其他元素并且文本不在它找到的跨度标记中 easley,但是在它找不到的跨度中。有什么区别以及达到该元素的最佳方式是什么。因为在这种情况下,通过 linkText 查找似乎是完美的。谢谢!附上 HTML:

<nav class="site-navbar navbar navbar-inverse navbar-fixed-top bg-teal-600" role="navigation">
    <div class="container-fluid">
        <div class="navbar-header">
                <div class="navbar-brand site-gridmenu-toggle" data-toggle="gridmenu">
                    <span class="navbar-brand-text">whatever</span>
                </div>
            <button type="button" class="navbar-toggle hamburger hamburger-close collapsed" data-target="#site-navbar-collapse" data-toggle="collapse">
                <i class="hamburger-bar" aria-hidden="true"></i>
            </button>

            <button type="button" class="navbar-avatar navbar-toggle padding-horizontal-0" data-toggle="dropdown" href="#" aria-expanded="false" data-animation="scale-up" role="button">
                <span class="avatar avatar-online" style="top: -3px">
                    <img src="https://whatever.png" alt="...">                  <i></i>
                </span>
            </button>

                         <a type="button" href="https://whatever" class="navbar-toggle padding-top-15 padding-horizontal-0">
                <span class="btn btn-warning"> Kassa </span>
            </a>

代码 sn-p: System.setProperty("webdriver.gecko.driver","C:\\Utility\\BrowserDrivers\\geckodriver.exe"); driver = new FirefoxDriver(); wait = new WebDriverWait(driver, 10); driver.manage().window().maximize();

然后我将通过基本身份验证进入网页,不会在此处发布此数据,并且基本上在我登陆的页面上我想尝试找到这样的元素:

login.wait.until(ExpectedConditions.elementToBeClickable(By.linkText("Kassa"))).click();

导航图片。吧nav. bar

【问题讨论】:

  • 可以添加代码sn-p吗?
  • @bad_deadpool 我添加了,希望如果您需要任何其他信息,请告诉我就足够了,但没有什么复杂的,只是我用来尝试定位一个元素的一种方法。但最重要的是它在 Chrome 中完美运行,这意味着代码肯定没问题。我正在使用 Selenium 3.4、GeckoDriver 0.16 和 Firefox 53.0,我尝试降级一个版本的 Firefox,同样的问题。

标签: firefox selenium-webdriver automation


【解决方案1】:

虽然某些代码可以在 chrome 上运行,但它也应该可以在 firefox 上运行;但如果它不起作用,那么您可以尝试使用以下方法找到所述元素:

更新:

 WebElement navElement = driver.findElement(By.cssSelector("div.container-fluid a>span.btn.btn-warning"));

 Actions action = new Actions(driver);
 action.moveToElement(navElement).click().build().perform();

【讨论】:

  • 感谢您的回答,但遗憾的是它不起作用。这就是我或多或少相信一切都设置正确的问题,驱动程序等,因为它确实打开了浏览器,进入页面并且它可以处理一些元素,例如那些文本不在范围内的元素,此外它确实在 Chrome 中完美运行。但是,例如这个元素,除了我认为不是很好的 brute xpath 之外是不可能到达的。我真的别无选择。我正在使用 Selenium v​​3.4、GeckoDriver v0.16 和 Firefox v53
  • 这也是导航栏吧??所以你必须悬停/单击选项才能到达
  • 没有错误,只是以下超时异常:org.openqa.selenium.TimeoutException: Expected condition failed: waiting for visibility of element located by By.cssSelector: div.container-fluid a&gt;span.btn.btn-warning (tried for 10 second(s) with 500 MILLISECONDS interval) 关于悬停/单击我将附上导航网页中的图片。酒吧。我只需要单击该元素,我想再次指出它与 Chrome 完美配合。
  • 是的,它确实是这样工作的!太好了,但能否请您简要解释一下发生了什么或者壁虎版本只是坏了?
  • 这不能肯定;但是首先使用动作类,我们将焦点更改为该特定元素,然后与它进行交互。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-18
  • 1970-01-01
  • 2014-07-26
  • 2021-02-20
  • 2023-04-01
  • 2020-11-06
相关资源
最近更新 更多