2016-09-28 10 views
6

मैं एक नोड फ़ंक्शन लिखने का प्रयास कर रहा हूं जो किसी वेबसाइट पर लॉग इन करता है और इसे काम करने में परेशानी हो रही है। मैं isElementPresent फ़ंक्शन का उपयोग करके पृष्ठ को लोड करने का इंतजार कर रहा हूं, this post में संदर्भित है लेकिन ऐसा लगता है कि यह काम नहीं कर रहा है।TypeError: driver.isElementPresent एक फ़ंक्शन नहीं है

यहाँ मैं अब तक है:

const webdriver = require('selenium-webdriver') 
const By = webdriver.By 

var username = '' 
var password = '' 
var timeout = 5000 

function FacebookLogin(username, password) { 

    var driver = new webdriver.Builder() 
     .withCapabilities(webdriver.Capabilities.chrome()) 
     .build() 

    driver.get('http://www.facebook.com') 

    driver.wait(function() { 
     return driver.isElementPresent(By.id('email')) 
    }, timeout) 

    var user = driver.findElement(By.id('email')) 
    user.sendKeys(username) 

    var pass = driver.findElement(By.id('pass')) 
    pass.sendKeys(password) 

    pass.submit() 
    driver.sleep(5000) 
    driver.quit() 
} 

FacebookLogin(username, password) 

हालांकि मैं त्रुटि TypeError: driver.isElementPresent is not a function प्राप्त जब मैं समारोह चलाते हैं। यहाँ क्या हो रहा है और मुझे क्या याद आ रहा है?

उत्तर

14

For consistency with the other Selenium language bindings, WebDriver#isElementPresent() and WebElement#isElementPresent() have been deprecated.

आप Selenium 3 का उपयोग कर रहे हैं, तो आप findElements बजाय का उपयोग कर करना चाहिए कोशिश तत्व निर्धारित करने के लिए वर्तमान या नीचे के रूप में नहीं: -

driver.findElements(By.id('email')).then(found => !!found.length); 

या आप जब तक इच्छा तत्व मौजूद इंतजार करना चाहते हैं, आपको नीचे दिए गए webdriver.until का उपयोग करने का प्रयास करना चाहिए: -

const until = webdriver.until; 

var user = driver.wait(until.elementLocated(By.id('email')), timeout); 
user.sendKeys(username); 
+0

लेकिन मैं इस कोड को सेलेनियम 3 के लिए कैसे बदल सकता हूं? 'driver.wait (function() { वापसी driver.isElementPresent (By.css (" प्रपत्र नियंत्रण। ")); }, 10000);' – RFtests

1

सुनिश्चित करें कि सेलेनियम और ब्राउज़र चालक जैसी सभी निर्भरताएं बहुत ही कम उदाहरण का उपयोग करके स्थापित और काम कर रही हैं।

फिर आप देख सकते हैं कि Driver.log (util.inspect (driver)) के साथ ड्राइवर ऑब्जेक्ट पर कौन से फ़ंक्शन हैं;

यदि आपकी निर्भरताएं स्थापित की गई हैं, तो हो सकता है कि एपीआई थोड़ा बदल गया हो। वर्तमान उदाहरण यहां https://www.npmjs.com/package/selenium-webdriveruntil का उपयोग करता है। आप पहले उस उदाहरण के करीब कुछ कोशिश करना चाह सकते हैं।

+0

मैंने सत्यापित निर्भरता स्थापित की है। शायद एपीआई बदल गया? मुझे दस्तावेज़ों में कोई संदर्भ नहीं मिल रहा है, http://seleniumhq.github.io/selenium/docs/api/javascript/module/selenium-webdriver/index.html। यह फ़ंक्शन कहने के लिए सुरक्षित अब उपयोग नहीं किया जाता है? – jmreicha

+0

हां मुझे लगता है कि अब इसका उपयोग नहीं किया जाता है। हो सकता है तत्व 'जब तक' https://github.com/SeleniumHQ/selenium/blob/master/javascript/node/selenium-webdriver/lib/until.js –

+0

तक काम करता है, तब तक। ऐसा लगता है कि यह अंतःस्थापित हो रहा है लेकिन मुझे लगता है कि यह मुद्दा इस प्रश्न के बाहर है। – jmreicha

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