2017-06-21 97 views
1

我是Java和Selenium的新手。我試圖登錄到一個網站,有一個唯一的用戶名和密碼的ID,所以我想我會使用CSS來定位登錄字段。我可以在Selenium IDE中執行此操作,但不能在Eclipse中執行此操作。通過Selenium Webdriver的CSS Selector登錄Java

<input name="uid_578180ab6f188bd2803df958f4aafa6c399bc8fe" class="form-control 
col-sm-10" id="uid_578180ab6f188bd2803df958f4aafa6c399bc8fe" autofocus="" 
required="" type="text"> 

我能夠啓動網站,但用戶名和密碼字段保持空白。

driver.findElement(By.cssSelector("[id^=uid_]")).sendKeys("username"); 
driver.findelement(By.cssSelector("[id^=pwd_]")).sendKeys("password"); 

這是用於密碼的字段。也許我的做法是不正確的。

<input type="password" required="" class="form-control" 
id="pwd_28e13d5a226a4a576f54de3e0501f2ce1b8204ee" 
name="pwd_28e13d5a226a4a576f54de3e0501f2ce1b8204ee" 
onkeypress="if(event.keyCode==13) 
{document.getElementById('login_form').submit();}"> 

回答

0

CSS - 是造型技術,它使用選擇器(.classes和#id's)來定位元素。 Java可以使用選擇器來查找元素。如果你想爲唯一(單個)元素找到許多元素和ID,那麼使用類很聰明。

driver.getElementById("uid_578180ab6f188bd2803df958f4aafa6c399bc8fe").sendKeys("username"); 
driver.getElementById("pwd_28e13d5a226a4a576f54de3e0501f2ce1b8204ee").sendKeys("password"); 
+0

道歉輸入,我的意思是說,UID和PWD是動態的,所以在每一個新的實例,uid_後的字符串pwd_將會改變。 – fitfa3234

+0

那麼,您可以將類:.password和.username分配給您的輸入並以正常方式使用它,但是您無法確定是否選擇了帶有類的單個元素。通過選擇ID的部分名稱來處理唯一的ID - 是不正確的(因爲您可能會選擇多個ID)。另外,1個元素不能分配2個不同的ID。 –

+0

我不確定你的意思是使用.password和.username分配給我的輸入。我認爲使用下面的這樣的東西可以工作,但它似乎不是輸入密鑰。 driver.findElement(By.cssSelector(「input [id ='uid _']」))。sendKeys(「username」) – fitfa3234

0

我試過你的解決方案。如果在網頁上只有一個以「uid」或「pwd」開頭的元素,它應該可以工作。

您可以嘗試稍微等一下並檢查一下。如果你已經確定的路徑是唯一的,該文本將在這兩個用戶名密碼領域

相關問題