python تعلم - الحصول على قيمة الإرجاع من التعليمات البرمجية Javascript في السيلينيوم




الجافا سكربت (3)

يمكنك إرجاع القيم حتى إذا لم يكن لديك الشفرة المكتوبة كدالة كما هو موضح في شفرة المثال أدناه ، بإضافة فقط return var; في النهاية حيث var هو المتغير الذي تريد إرجاعه.

result = driver.execute_script('''cells = document.querySelectorAll('a');
URLs = []
console.log(cells);
[].forEach.call(cells, function (el) {
    if(el.text.indexOf("download") !== -1){
    //el.click();
    console.log(el.href)
    //window.open(el.href, '_blank');
    URLs.push(el.href)
    }
});
return URLs''')

ستحتوي result على المصفوفة الموجودة في URLs لهذه الحالة.

أنا أستخدم Selenium2 لبعض الاختبارات التلقائية لموقع الويب الخاص بي ، وأود أن أتمكن من الحصول على قيمة الإرجاع الخاصة ببعض كود جافاسكريبت. إذا كان لدي وظيفة foobar() Javascript في صفحتي على الويب وأريد الاتصال بها والحصول على قيمة الإرجاع في رمز Python الخاص بي ، فماذا يمكنني الاتصال للقيام بذلك؟


لإرجاع قيمة ، استخدم ببساطة الكلمة الأساسية JavaScript في السلسلة التي تم تمريرها إلى طريقة execute_script() ، على سبيل المثال

>>> from selenium import webdriver
>>> wd = webdriver.Firefox()
>>> wd.get("http://localhost/foo/bar")
>>> wd.execute_script("return 5")
5
>>> wd.execute_script("return true")
True
>>> wd.execute_script("return {foo: 'bar'}")
{u'foo': u'bar'}
>>> wd.execute_script("return foobar()")
u'eli'

سأفعل هذا بدلاً من التحقق من obj.hasOwnerPropertyكل for ... inحلقة.

var obj = {a : 1};
for(var key in obj){
    //obj.hasOwnProperty(key) is not needed.
    console.log(key);
}
//then check if anybody has messed the native object. Put this code at the end of the page.
for(var key in Object){
    throw new Error("Please don't extend the native object");
}




javascript python selenium-webdriver