it-swarm.dev

السيلينيوم Webdriver submit () مقابل النقرة ()

دعنا نقول أن لدي input في نموذج (يشبه الزر ويتفاعل مثل زر) الذي يولد بعض البيانات (حسنًا ، يقوم الخادم بإنشاء البيانات استنادًا إلى معلمات النموذج ، ولكن بالنسبة للمستخدم ، فإن الزر يفعل ذلك :)) بناء على المعلمات في النموذج.

عندما أستخدم click() ، فإن العملية بأكملها معلقة (في الواقع تتجمد ، لا استثناءات أو أخطاء).

من موقع السيلينيوم:

// Now submit the form. WebDriver will find the form for us from the element
element.submit();

لذلك WebDriver لديه طريقة submit(). هل هناك أي فرق ، المنطق ، بين استخدام click() على زر أو submit()؟

52
CosminO

وظيفة submit() تجعل الحياة أسهل. يمكنك استخدامه على أي عنصر داخل علامات النموذج لإرسال هذا النموذج.

يمكنك أيضًا البحث عن زر الإرسال واستخدام click().

وبالتالي ، فإن الفارق الوحيد هو click() يجب أن يتم على زر التقديم ويمكن submit() أن يتم على أي عنصر من عناصر النموذج.

الأمر متروك لك.

http://docs.seleniumhq.org/docs/03_webdriver.jsp#user-input-filling-in-forms

61
Dan2.0

هناك فرق بين click () و send ().

يقدم () يقدم النموذج وينفذ عنوان url المعطى من خلال سمة "action". إذا كان لديك أي وظيفة javascript أو jquery-plugin قيد التشغيل لإرسال النموذج ، على سبيل المثال عبر اياكس ، سوف يتجاهل تقديم () ذلك. بنقرة () سيتم تنفيذ وظائف جافا سكريبت.

29
IonTichy

كنت معجبًا كبيرًا بـ submit() لكن ليس بعد الآن.

في صفحة الويب التي أختبرها ، أدخِل اسم المستخدم وكلمة المرور وانقر فوق تسجيل الدخول. عندما قمت باستدعاء usernametextbox.submit() ، يتم مسح مربع نص كلمة المرور (يصبح فارغًا) ويظل تسجيل الدخول فاشلاً.

بعد كسر رأسي لبعض الوقت ، عندما استبدلت usernametextbox.submit() بـ loginbutton.click() ، كان الأمر يبدو وكأنه سحر.

11
user3000430

كذلك ، صححني إذا كنت مخطئًا ، لكنني أعتقد أن الإرسال سينتظر تحميل صفحة جديدة ، في حين سيستمر النقر على الفور في تنفيذ التعليمات البرمجية

6
user2426679

.Click () - نفذ عملية النقر فقط مثل النقر بالماوس.

.Submit () - تنفيذ عملية Enter مثل الحدث Enter لوحة المفاتيح.

فمثلا. النظر في صفحة تسجيل الدخول حيث يحتوي على اسم المستخدم وكلمة المرور وزر الإرسال.

عند ملء كلمة المرور إذا كنا نريد تسجيل الدخول دون النقر على زر تسجيل الدخول. نحن بحاجة إلى زر المستخدم. تقديم كلمة المرور حيث لا تعمل .click () العملية. [لتسجيل الدخول إلى التطبيق]

Brif.

driver.get("https:// anyURL"); 
driver.manage().window().maximize(); 
driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS); 
driver.findElement(By.id("txtUserId")).sendKeys("[email protected]"); 
WebElement text = driver.findElement(By.id("txtPassword")); text.sendKeys("password"); 
Thread.sleep(1000); 
text.click();   //This will not work - it will on perform click operation not submit operation
text.submit(); //This will perform submit operation has enter key 
1
Santosh Kanekar

لا submit() ولا click() جيدة بما فيه الكفاية. ومع ذلك ، فإنه يعمل بشكل جيد إذا تابعت ذلك باستخدام مفتاح ENTER:

search_form = driver.find_element_by_id(elem_id)
search_form.send_keys(search_string)
search_form.click()
from Selenium.webdriver.common.keys import Keys
search_form.send_keys(Keys.ENTER)

تم اختباره على Mac 10.11 و python 2.7.9 و Selenium 2.53.5. هذا يعمل بالتوازي ، وهذا يعني العودة بعد إدخال مفتاح ENTER ، لا تنتظر تحميل الصفحة.

1
manpur

submit() طريقة يمكن استخدامها للنقر على الزر الموجود في النموذج ويجب أن تكون السمة Type "send".

تستخدم طريقة click() للنقر على الزر في صفحة الويب.

صحح لي إن كنت مخطئ.

1
Gowtham