【问题标题】:webdriver is not able to click on a hyperlink in firefoxwebdriver 无法点击 Firefox 中的超链接
【发布时间】:2014-01-09 11:16:11
【问题描述】:
package testproject;

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


public class WeblinkTest {

    public static void main(String[] args) throws InterruptedException {
    // Creating a fierfox driver/window
    WebDriver driver= new FirefoxDriver();
    //Assigning address of the webpage which you want to check
    driver.get("https://www.google.co.in/");
    Thread.sleep(2000);
    //Creating and Identifing--By.xpath the element on which you want testing
    WebElement wb1= driver.findElement(By.xpath(".//*[@id='gb']/div[1]/div[1]/div[1]/div[2]"));
    wb1.click();
    Thread.sleep(2000);
    }

}

今天我试图测试 Google 主页 (www.google.co.in) 上提供的 gmail 链接。我能够启动一个 fierfox 窗口,并且它能够执行将我带到 google 主页的第一步,但之后什么都没有发生,我也没有收到任何运行时错误或 eclipse 的任何异常。不知道 webdriver 发生了什么。 我已经在 stakwave 上发布了另外一个程序的问题,所以如果你可以的话,请看看这个链接-Why my test is throwing Exception-Unable to locate element in webdriver?

【问题讨论】:

  • 您是否确认您从 Fearfox 获得的 WebElement 仍然是正确的?网页往往会在一夜之间发生变化。
  • @zapl ya 我已经在 firebug 和 selenium 的帮助下验证了它,即(两个 firefox 插件)

标签: java eclipse firefox selenium selenium-webdriver


【解决方案1】:

请在下面尝试。它应该工作

List<WebElement> elements = driver.findElement(By.LinkText("Gmail"))
elements.get(0).click().

【讨论】:

  • @A Paul 我在一月份发布了这个问题,说网络驱动程序无法单击超链接,而现在我得到了解决方案。实际上,超链接的 xpath 并不准确。我使用了这个 xpath- .//*[@id='gb']/div[1]/div[1]/div[1]/div[2] 来定位徽标而不是按钮。今天我把它改成了 .//*[@id='gb']/div[1]/div[1]/div[1]/div[2]/a 现在它工作得很好。请不要对我生气,因为我正在处理我从论坛提出的问题并找到了这个问题。我得到了问题的解决方案。
【解决方案2】:

在驱动程序初始化后尝试使用 implimentig 隐式等待。通过添加以下行 driver.manage().timeouts().implicitlyWait(50, TimeUnit.SECONDS);

【讨论】:

  • 我做到了,但仍然得到相同的结果,即启动窗口 WebDriver driver= new FirefoxDriver(); 后什么都没有发生driver.manage().timeouts().implicitlyWait(50, TimeUnit.SECONDS);
  • 试试这个 driver.findElement(By.LinkText("Gmail")).click();
  • 它在“findelement”中显示错误。不知道为什么会这样。有什么线索吗?
【解决方案3】:

代码中的 XPATH 是 DIV 元素,但您想点击 ANCHOR Gmail 所以更新 ANCHOR 的 xpath 并点击它。

【讨论】:

  • 对不起,我不熟悉“锚”这个词。你能给我你要我更新的路径吗
  • driver.findElement(By.xpath(".//*[@id='gb']/div[1]/div[1]/div[1]/div[2]/ a"));
  • 我正在使用 driver.findElement(By.xpath(".//*[@id='gb']/div[1]/div[1]/div[1]/div[ 2]/a"));仅代码,但最终结果相同,即启动浏览器后没有任何反应
  • 我已经用我所说的更改测试了代码,即添加锚及其工作亲爱的
【解决方案4】:

我已经测试了下面的代码,它点击谷歌页面上的GMAIL链接,如果你的问题得到解决,那么选择作为答案

WebDriver driver= new FirefoxDriver();
driver.get("https://www.google.co.in/");
WebElement wb1= driver.findElement(By.xpath(".//*[@id='gb']/div[1]/div[1]/div[1]/div[2]/a"));
wb1.click();

【讨论】:

  • 对不起,伙计,但不知道为什么代码在我的系统上不起作用。我能感觉到你在写评论时的激动,这对我来说完全没问题,因为昨天我也面临同样的问题。不知道为什么代码在其他系统上运行良好。
  • 没关系。你在代码执行过程中遇到任何异常吗??
  • 你能提供库的详细信息吗?版本意味着 selenium 和 firefox jar 版本
  • 我可以得到但不知道如何提供库详细信息的版本。 Fierfox 版本是 26.0,selenium 版本是 2.39.0。
  • 我不知道你用什么来解决库的依赖关系。我正在使用 maven 来解决依赖关系,如果你只是将 jar 添加到你的类路径然后从 mvn 存储库下载 jar。下面是maven 依赖 org.seleniumhq.seleniumselenium-firefox-driver2.30.0 org.seleniumhq.webdriverwebdriver-common0.9.7089
【解决方案5】:

这应该可行,

new WebDriverWait(driver,30).until(ExpectedConditions.visibilityOfElementLocated(By.linkText("Gmail"))).click();

【讨论】:

  • @A Paul 我在一月份发布了这个问题,说网络驱动程序无法单击超链接,而现在我得到了解决方案。实际上,超链接的 xpath 并不准确。我使用了这个 xpath- .//*[@id='gb']/div[1]/div[1]/div[1]/div[2] 来定位徽标而不是按钮。今天我把它改成了 .//*[@id='gb']/div[1]/div[1]/div[1]/div[2]/a 现在它工作得很好。请不要对我生气,因为我正在处理我从论坛提出的问题并找到了这个问题。我得到了问题的解决方案。
【解决方案6】:

我在一月份发布了这个问题,说网络驱动程序无法单击超链接,而现在我得到了解决方案。 实际上,超链接的 xpath 并不准确。 我用过这个xpath- .//*[@id='gb']/div[1]/div[1]/div[1]/div[2] 这是在定位徽标而不是按钮。

今天我把它改成了 .//*[@id='gb']/div[1]/div[1]/div[1]/div[2]/a 现在它工作得很好。

请不要对我生气,因为我正在处理我从论坛提出的问题并找到了这个问题。我得到了问题的解决方案,这就是我分享这个的原因。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-01
    • 1970-01-01
    • 2017-03-19
    • 2012-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-17
    相关资源
    最近更新 更多