java - Webdriver findElement 按输入类返回 "no such element"

标签 java selenium webdriver classname

我想使用 Webdriver 在表中写入一些内容。所以,基本上我有一个包含 X 行和 Y 列的表。每个字段都标有例如中的第 0 行第 2 列。

代码如下

<!-- language: lang-html -->
<div id="ScheduleTable-01" class="widget Scheduletable suppress-errors Schedule-grid" data-widget="ScheduleTable">
<div class="grid-wrapper">
<table class="nostyles weekmode hourstype fullmonth" style="width: 100%;">
<thead>
<tbody>
<tr id="1165051795" class="Schedule-row row0 1165051795 key_AuthoriserId-1132_JobId-A00890131S_TaskId-OPT1_TsCode-01" data-row-index="0" data-job="EAST BUILDINGS">
<td class="Schedule-col details">
<td class="Schedule-col timeslots">
<div class="timeslots-container" style="opacity: 1; visibility: visible;">
<div class="timeslot d1424343600000 row0 col0 current" data-time="1424343600000" style="width: 3.22581%;">
<div class="timeslot d1424430000000 row0 col1 current" data-time="1424430000000" style="width: 3.22581%;">
<input class="row0 col1 widget class changed color black hi" type="text" autocomplete="off">
</div>
<div class="timeslot d1424516400000 row0 col2 current" data-time="1424516400000" style="width: 3.22581%;">
<input class="row0 col2 widget" type="text" autocomplete="off">
</div>
<div class="timeslot d1424602800000 row0 col3 current" data-time="1424602800000" style="width: 3.22581%;">
<div class="timeslot d1424689200000 row0 col4 current" data-time="1424689200000" style="width: 3.22581%;">
<div class="timeslot d1424775600000 row0 col5 current" data-time="1424775600000" style="width: 3.22581%;">

我想在表格第0行第1列中写入“1.1”,所以这个HTML部分就是我想要的

<!-- language: lang-html -->
<div class="timeslot d1424516400000 row0 col2 current" data-time="1424516400000" style="width: 3.22581%;">
<input class="row0 col2 widget" type="text" autocomplete="off">
</div>

我的 Selenium 代码如下所示

<!-- language: lang-java -->
WebElement writeSomething = driver.findElement(By.className("row0.col1.widget"));
            writeSomething.sendKeys("1.1");

Selenium 说org.openqa.selenium.NoSuchElementException:没有这样的元素

但是如果我使用xpath,它工作得很好

<!-- language: lang-java -->
WebElement writeSomething = driver.findElement(By.xpath(".//*[@id='1165051795']/td[2]/div/div[2]/input"));
writeSomething.sendKeys("1.1");

如何正确地通过 className 进行 findElement? 谢谢。

最佳答案

问题是 - 您正在使用 By.className(),但在内部提供了 CSS 选择器。相反,使用 By.cssSelector():

WebElement writeSomething = driver.findElement(By.cssSelector("input.row0.col1.widget"));

关于java - Webdriver findElement 按输入类返回 "no such element",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29137442/

相关文章:

java - 如何在Spring中使用WebLogic提供的JNDI DataSource?

java - 使用 apache-spark 进行合并排序

java - Java双向链表

java - Selenium TestNG java - 参数太多

python - 对于带有 Python 的 Selenium,我怎样才能让它按 CTRL、SHIFT、i?

java - GIT:如何使用cherry-pick在两个分支中提交

java Selenium Chrome - 单击按钮

java - 如何使用selenium,java下载文件

google-chrome - Google Chrome 21不支持--disable-web-security命令行开关

testing - 如何使用 webdriver 检查浏览器中的错误消息弹出窗口?