【问题标题】:Not able to locate element in Selenium tried xpath,name,id,css selector无法在 Selenium 中找到元素尝试了 xpath、name、id、css 选择器
【发布时间】:2016-01-21 11:56:59
【问题描述】:

我尝试过使用名称、id、xpath。但是我在 Eclipse 中遇到了同样的错误,它无法找到该元素。

WebDriver driver=new FirefoxDriver();  
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.get("https://accenturenordicspov.service-now.com/navpage.do");
driver.findElement(By.xpath("/html/body/form/table/tbody/tr[3]/td[2]/input")).sendKeys("John");
driver.findElement(By.xpath("/html/body/form/table/tbody/tr[4]/td[2]/input[1]")).sendKeys("A***");
driver.findElement(By.id("/html/body/form/table/tbody/tr[7]/td[2]/button")).click();

【问题讨论】:

  • 你能分享一下那个 HTML 代码吗?
  • 你试过火狐浏览器的FirePath扩展吗?如果不试试。正如我从链接中看到的,您正在寻找的所有元素都有一个 ID,所以使用它。 .//*[@id='user_name'] - 用户名(从这里我知道了)
  • 我正在为 firefox 使用 firebug 扩展...driver.findElement(By.xpath("//input[@id='user_name']")).sendKeys("John");也不适合我...

标签: java html selenium xpath


【解决方案1】:

它首先需要移动到那个框架然后输入元素。如果只是在输入元素之前放置这段代码,上面的代码就可以工作:

String x="gsft_main";
driver.switchTo().frame(x);

【讨论】:

  • 我认为你应该用绿色勾号标记dinesh的答案,而不是添加你自己的答案。
  • 好吧,我最近注册的堆栈不是很熟悉....感谢您的指导。
  • 哦,好吧。无论如何,欢迎来到 SO! :)
【解决方案2】:

根据您提供的链接,该表单位于iframe 中。因此,您需要切换到框架,然后填写表格。你应该试试这个:

driver.switch_to.frame("gsft_main")
driver.findElement(By.xpath("//input[@id='user_name']").sendKeys("John");
driver.findElement(By.xpath("//input[@id='user_password']").sendKeys("A***");
driver.findElement(By.xpath("//button[@id='sysverb_login']").click();

【讨论】:

  • OP,请看这个教程:w3.org/TR/xpath。并且您将能够正确使用 xPath。
  • @Jason- 你的脚本不工作,....!仍然给出同样的错误。无法定位元素。
  • @JohnWick - 我已经更新了我的答案。我没有注意到表单在iframe 中。
【解决方案3】:

可能在不同的框架中。请检查 frame 或 iframe 标签是否是您要交互的框的父级。 如果是,那么您必须切换到该框架,然后才能进行交互。

【讨论】:

  • 给了你一票。我没有注意到表格是iframe。干得好! :)
  • 是的,这是一个框架问题....我编写了代码来更改框架,然后输入元素....它现在可以工作了...谢谢:)
猜你喜欢
  • 1970-01-01
  • 2022-01-07
  • 1970-01-01
  • 2015-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-21
相关资源
最近更新 更多