Java Selenium-无法按类名定位元素
我想找到一个带有Java Selenium-无法按类名定位元素,java,selenium-webdriver,Java,Selenium Webdriver,我想找到一个带有class=“big number”的p标记。以下是我编写的代码: WebElement myDynamicElement = (new WebDriverWait(driver, 10)).until(ExpectedConditions.presenceOfElementLocated(By.className("big-number"))); System.out.println(driver.getTitle()); System.out.println(myDynami
class=“big number”
的p
标记。以下是我编写的代码:
WebElement myDynamicElement = (new WebDriverWait(driver, 10)).until(ExpectedConditions.presenceOfElementLocated(By.className("big-number")));
System.out.println(driver.getTitle());
System.out.println(myDynamicElement);
以下是我的输出:
[[FirefoxDriver: firefox on MAC (fed46ad4-9ca9-9344-a57a-1d336db3927c)] -> class name: big-number]
我无法识别错误,它给了我一个输出,但对我来说毫无意义。
关于如何至少识别我的错误,有什么建议吗
我肯定元素存在,下面是HTML代码:
<div id="users-online-container" style="">
<img class="big-number-icon" src="images/usersOnline.png">
<p class="big-number">228</p>
<p class="caption">Users Online</p>
</div>
<div id="users-online-loading"></div>
228
发生TimeOutException是因为驱动程序在特定时间内找不到元素。我想是选择器的问题。如果您确定该元素始终可见,并且存在于页面上,请尝试下一个代码:
//Select first paragraph in div
driver.FindElement(By.CssSelector("#users-online-container .big-number"));
//if you have several p with same classes you could access any of them using index. e.g.
driver.findElements(By.CssSelector(".big-number"))[index];
选择器可以是#用户在线容器。大数字
或。大数字
。这两种方法都有效。请尝试下面的代码
WebElement myDynamicElement = (new WebDriverWait(driver, 10)).until(ExpectedConditions.presenceOfElementLocated(By.className("big-number")));
// It will print the text of the Element:
system.out.println(myDynamicElement.getText());
此外,您还尝试在XPATH的帮助下定位该元素,并确保定位器是唯一标识该元素的。还要检查IsDisplayed()和IsEnabled()是否返回True
在代码中,您正在打印将打印哈希代码的WebElement。
为了获取元素的文本,必须使用getText()方法
希望这会有帮助 多发布一点堆栈跟踪和错误消息会有所帮助。另外,元素是否有多个类?同一个类中还有两个元素。这是一个示例45
55
没有错误,输出是我提供的。如果我改为HtmlUnitDriver,我会得到一个错误。我会发布错误是什么编辑对你有帮助吗?嘿!谢谢你的回复!我现在将更经常地使用CSS选择器,因为我认为它比必须声明两个web元素要简单得多。我发现了错误,因为我没有.getText()。它给了我一些地址w/o.getText()奇怪的原因是我没有看到任何包含这个的教程。无论如何,我的错误已经解决了,谢谢你花时间回复