2015-03-19 50 views
1

我想使用Webdriver在表中寫東西。所以,基本上我有一個X行和Y列的表格。每個字段用例如第0行第2列中。通過輸入類的Webdriver findElement返回「沒有這樣的元素」

的代碼看起來像這樣

<!-- 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%;"> 

我想寫「1.1」錶行中0柱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> 

我的硒代碼看起來是這樣的

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

硒說org.openqa.selenium.NoSuchElementException: no such element

但如果我使用XPath,它工作正常

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

我該怎麼辦findElement通過類名是否正確? 謝謝。

回答

2

問題是 - 您正在使用By.className(),但提供了一個CSS選擇器裏面。相反,使用By.cssSelector()

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

謝謝。這樣可行。只需要添加「。」所以它變成了'WebElement writeSomething = driver.findElement(By.cssSelector(「。row0.col1.widget」));'乾杯。 – keylogger 2015-03-19 22:07:49

相關問題