2013-07-19 6 views
5

निम्नलिखित कोड एक वेबपेज के एक autocomlete बॉक्स का परीक्षण करती है:सेलेनियम का उपयोग कर एक स्वत: पूर्ण इनपुटबॉक्स कैसे भरें? (क्यों एक स्वचालित इनपुट स्वत: पूर्ण विकल्प लोड नहीं करता है लेकिन एक मैनुअल इनपुट करता है?)

public class Test { 

    public static void main(String[] args) throws InterruptedException { 
     System.setProperty("webdriver.chrome.driver","chromedriver\\chromedriver.exe");  
     WebDriver driver = new ChromeDriver(); 
     driver.get("http://www..............com"); 
     driver.switchTo().frame("mainFrame"); 

     WebDriverWait waitst = new WebDriverWait(driver, 120); 
     waitst.until(ExpectedConditions.visibilityOfElementLocated(By.name("sourceTitle"))); 

     WebElement sourceTitle = driver.findElement(By.name("sourceTitle")); 
     WebElement small = driver.findElement(By.cssSelector("li#nameExampleSection label + small")); 
     sourceTitle.sendKeys("Times"); 
     Thread.sleep(5000); 
     Actions actions = new Actions(driver); 
     actions.click(small).perform(); 

    } 

} 

क्यों नहीं autosuggest बॉक्स लोड? महत्वपूर्ण:"..........." मैन्युअल रूप से टाइप करने का प्रयास करें ... स्वत: पूर्ण बॉक्स पूरी तरह ठीक लोड होगा !!! तो, cssSelector क्यों काम नहीं करता है, यह स्वत: पूर्ण बॉक्स क्यों लोड नहीं करता है?

स्वत: इनपुट कैसे स्वत: पूर्ण विकल्पों की अनुमति नहीं देता है लेकिन मैन्युअल इनपुट करता है ???

पीएस: मैंने fireEvent, sendKeys भी कोशिश की लेकिन कुछ भी काम नहीं करता है।

+0

का उपयोग करके आवश्यक मान दर्ज करेगा। क्या आपने अन्य ब्राउज़रों को आजमाया है ??इसके अलावा आप वेब चालक प्रतीक्षा में 0 सेकंड का इंतजार क्यों कर रहे हैं। – Madusudanan

+0

उत्तर के लिए धन्यवाद। 1) स्पष्ट प्रतीक्षा में कोई समस्या नहीं है, मैं '(ड्राइवर, 120)' का उपयोग कर सकता हूं। पेज ठीक लोड करता है। समस्या तब होती है जब "एसोसिएटेड प्रेस, द" इनपुट बॉक्स में आता है ... मैन्युअल रूप से - कोई समस्या नहीं है, लेकिन जैसा कि यह स्वचालित रूप से वहां जाता है - यह आसानी से विकल्पों को लोड नहीं करेगा। 2) मैंने फ़ायरफ़ॉक्स की भी कोशिश की - कोई सुधार नहीं। – Buras

+0

शीर्षक बहुत ही आशाजनक था लेकिन मुझे यह नहीं पता कि स्वीकार्य उत्तर इस तथ्य को कैसे संबोधित करता है कि भेजने के लिए() को स्वत: पूर्ण ड्रॉपडाउन सूची उस तरीके से दिखाई नहीं देती है जब वही पाठ इनपुट मैन्युअल रूप से टाइप किया गया था। और आपने एक असली यूआरएल क्यों नहीं दिया जहां कोई समस्याग्रस्त तत्व का निरीक्षण कर सके? –

उत्तर

1

मैंने आपके कोड की कोशिश की, यह वही है जो मैन्युअल चलने वाला करता है। "एसोसिएटेड प्रेस," केवल एक "कोई मैच नहीं लौटाता है, कृपया स्रोतों को आजमाएं"। अपने कोड में आप अगली फॉर्म सूची आइटम पर क्लिक करने का प्रयास करें, न कि परिणाम पॉपअप। स्वत: सुझाव पॉपअप इनपुट फॉर्म के नीचे स्थित आपके एचटीएमएल पेज के शीर्ष पर गतिशील रूप से आबादी वाला है। निम्नलिखित कोड आपके ड्रॉप डाउन पर पहला विकल्प चुनता है।

@Test 
public void test() throws InterruptedException { 
     WebDriver driver = new ChromeDriver(); 
     driver.get("http://www.lexisnexis.com/hottopics/lnacademic/?verb=sf&sfi=AC00NBGenSrch"); 
     driver.switchTo().frame("mainFrame"); 

     WebDriverWait waitst = new WebDriverWait(driver, 0); 
     waitst.until(ExpectedConditions.visibilityOfElementLocated(By.name("sourceTitle"))); 

     WebElement sourceTitle = driver.findElement(By.name("sourceTitle")); 
     sourceTitle.sendKeys("Times"); 
     Thread.sleep(5000); 
     WebElement firstItem = driver.findElement(By.xpath("//*[@class='auto_suggest']/*[@class='title_item']")); 
     firstItem.click(); 
} 
1

मुझे इसके बारे में एक समाधान मिला। मेरे समस्या थी:

  1. सेलेनियम
  2. स्वतः-सुझाव क्षेत्र का मिलान नहीं हुआ विकल्प के साथ एक साथ प्रकट होता है
  3. फिर सेलेनियम स्वतः-सुझाव ड्रॉप-डाउन खुला छोड़ दिया एक स्वत: सुझाव है कि स्थान क्षेत्र के लिए इनपुट 'Mandaluyong' मिलान किए गए विकल्प का चयन नहीं कर रहा है।

मैं क्या किया था:

 driver.findElement(By.name("fromLocation")).sendKeys("Mandaluyong"); 
     driver.findElement(By.name("fromLocation")).sendKeys(Keys.TAB); 

इसका कारण यह है एक मैनुअल परीक्षण पर, जब मैं टैब कुंजी प्रेस करने की कोशिश, दो बातें प्रणाली द्वारा किया गया:

  1. की पसंद ऑटो-सुझाव ड्रॉप-डाउन
  2. ऑटो-सुझाव ड्रॉप-डाउन
से मिलान किया गया विकल्प

उम्मीद है कि यह मदद करता है।

0

// टेक्स्ट बॉक्स को भरने के लिए ऑटोप्लुलेशन मान को अनुमति दें।

// 6 सेकंड के लिए प्रतीक्षा करें सुनिश्चित करें कि ऑटो मान डाला गया है thread.sleep (6000L);

// स्पष्ट ऑटो भरे हुए मूल्य driver.findElement (By.name ("txtbox"))। साफ़();

driver.findElement (by.name ("txtbox"))। SendKeys ("value");

0

इनपुट टेक्स्टबॉक्स पर पहले क्लिक करने का प्रयास करें। यह ऑटो पॉप्युलेटिंग ड्रॉपडाउन बॉक्स को ट्रिगर करेगा और उसके बाद sendKeys

+0

क्या आप इसका उदाहरण दे सकते हैं कि ऐसा कैसे करें? – Adam

+0

driver.findElement (By.name ("स्थान से"))। क्लिक करें(); driver.findElement (By.name ("fromLocation")) SendKeys ("XYZABC")।; driver.findElement (By.name ("fromLocation")) SendKeys (Keys.TAB)। –

संबंधित मुद्दे