typeKeys السيلينيوم يستبعد نقطة من سلسلة يتم كتابتها

StackOverflow https://stackoverflow.com/questions/803830

  •  03-07-2019
  •  | 
  •  

سؤال

والتعليمة التالية

Selenium.typeKeys("location", "gmail.com");

وأنواع من gmailcom سلسلة بدلا من gmail.com.

وماذا يحدث هناك؟

ومن التعليقات:
واني اسعى الى محاكاة التدوين الآلي، والطريقة الوحيدة للقيام بذلك في الوقت الراهن على السيلينيوم هو الجمع بين نوع وtypeKeys. على سبيل المثال:

selenium.type("assigned_to", split[0]+"@");
selenium.typeKeys("assigned_to", "gmail.com");

والآن سؤالي هو لماذا typeKeys لا اكتب "نقطة" بين gmail.com؟

هل كانت مفيدة؟

المحلول

هل حاولت استخدام وظائف رئيسية الأصليين و<لأ href = "http://www.cambiaresearch.com/c4/702b8cd1-e5b0-42e6-83ac-25f0306e3e25/Javascript-Char-Codes-Key-Codes.aspx "يختلط =" نوفولو noreferrer "> جافا سكريبت رموز شار ؟ لم أتمكن من الحصول على الحرف 'الفترة في العمل استخدامها (شار 190)، ولكن حصلت على العشرية (شار 110) للعمل على ما يرام، وأنه ينبغي للمربع النص ليس لديها مشكلة مع أي.

selenium.Focus("assigned_to");
selenium.Type("assigned_to", split[0]+"@");
selenium.TypeKeys("assigned_to", "gmail");
selenium.KeyPressNative("110");
selenium.TypeKeys("assigned_to", "com");

نصائح أخرى

استخدم طريقة type.

ومن في جافادوك لtypekeys :

<اقتباس فقرة>   

وهذا الأمر قد يكون أو لا يكون أي   أثر واضح، حتى في الحالات التي يكون فيها   أن مفاتيح الكتابة وعادة ما يكون   تأثير مرئي

     

...

     

في بعض الحالات، يجوز لك   تحتاج إلى استخدام بسيط "نوع" القيادة   لتعيين قيمة الحقل ثم   و"typeKeys" الأمر لإرسال   الأحداث المفاتيح المقابلة لماذا   كتبته فقط.

وكان لدينا مشاكل مماثلة باستخدام typekeys في بيثون السيلينيوم.

والحل واحد برزت لنا لحل هذه المشكلة هو استخدام مزيج من 'نوع' و 'type_keys. كما قد تكون على علم، اكتب لايوجد مثل هذه القضايا.

ولقد فعلنا ذلك في منطقتنا النصي الثعبان السيلينيوم، وأنه يعمل على ما يرام.

وعلى سبيل المثال: إذا كان هناك عنوان بريد إلكتروني إلى إدخالها في مربع النص: test.me@test.me.uk

وثم القيام

type(locator,’test.me@test.me.’)
type_keys(locator,’uk’)

وربما بطريقة بسيطة جدا القيام به، ولكنه لم المهمة.

وآمل أن يساعد هذا شخص آخر يعاني من مشكلة مماثلة.

وأيضا في محاولة لتعيين التركيز على عنصر قبل الكتابة عليه.

selenium.focus(locator);
selenium.typeKeys(locator, value);

وفعلت وظيفة في حالتي، والتعامل مع نوع المدخلات = كلمة السر.

لنفترض أن سلسلة ليتم كتابتها باستخدام typeKeys هو "abc.xyz.efg". ثم، يمكننا استخدام type وtypeKeys أوامر لكتابة سلسلة معينة.

type(locator,"abc.xyz.")
typeKeys(locator,"efg")

والاثنان الخطوات المذكورة أعلاه هي مفيدة كلما أردت تحديد عنصر في القائمة المنسدلة مربع، والقائمة المنسدلة للملوثات العضوية الثابتة أسفل فقط إذا استخدمنا قيادة typeKeys.

واراه أيضا هذا السلوك عند استخدام السيلينيوم RC (C #)، ومع شخصيات مختلفة ( 'ذ' على سبيل المثال والذي يبدو أيضا لإزالة الطابع متابعته من عمل الكتابة ..)

لبعض الحالات من الممكن تماما للالتفاف على القضية من خلال كتابة مفاتيح مع TypeKeys أو وظائف بضغطة، لكنني لم ينجحوا في العثور على الحل الذي يعمل عندما تريد كتابة نص في حقل، أدخل أحرف التحكم ([أدخل] أو سطر جديد على سبيل المثال)، ثم اكتب النص أكثر .. (باستخدام وظيفة "النوع" في هذه الحالة ببساطة الكتابة فوق محتويات الحقل ...).

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

وهذا هو علة مفتوح في السيلينيوم (علة SEL-519 ).

وبعد بعض تافه مع حولها، وأخيرا تمكن من دخول '.' في جزء النص باستخدام جافا سكريبت. تنفيذ شيء من هذا القبيل window.document.getElementById('assigned_to').value += '.' عبر storeEval أو ما شابه ذلك.

وحصلت على نفس السلوك ولكن ثابتة عن طريق تمرير المتغير إلى الأمر نوع بدلا من سلسلة.

string email = @"name@gmail.com";
selenium.Type(inputfield, email);

وهي تعمل مثل السحر!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top