سؤال

أحاول ضرب رابط في صف جدول يحتوي على روابط متعددة. يستخدم هذا النمط في جميع أنحاء الجدول.

هذا يعمل:

browser.wait_for(:element => "css=tr:nth-child(1) li:nth-child(2) > a")

لم يحدث ذلك:

browser.click "css=tr:nth-child(1) li:nth-child(2) > a"

اي فكار تجيب لماذا يمكن ان يكون؟ أنا أستخدم Rubygem السيلينيوم-العميل.

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

المحلول

أظن أن هذا يرجع إلى وجود خطأ في CSSquery ، والذي يستخدمه السيلينيوم حاليًا لتحديد العناصر بواسطة CSS. يمكن العثور على تفاصيل المشكلة وتصحيح في تعليقات القضية التالية: http://jira.openqa.org/browse/sel-698

آمل أن يساعد ذلك - أعتقد أن السيلينيوم 2 سيستخدم مكتبة مختلفة لمواقع CSS - ربما يزحف JQuery (http://sizzlejs.com/) ، والتي يجب أن تحل هذه المشكلة.

ديف.

نصائح أخرى

لتجنب مشكلات CSS المؤلمة مثل هذا ، قمت بتثبيت jQuery كملحق مستخدم. إنه يعطي القدرة على تحديد سلسلة محدد مشابهة لـ CSS ("jQuery = td.dt-col-status div.dt-liner: يحتوي على ('complete')") التي تكون أكثر قوة. يمكنني التوسع في كيفية فعل ذلك من أجل Java RC إذا كنت ترغب في ذلك.

هذا خطأ في السيلينيوم 1 سأحاول كتابة المسار بأكمله في مسار CSS ومعرفة ما إذا كان ذلك يساعد.

على سبيل المثال ، إذا كنت تستخدم HTML التالي ، يمكنك استخدام موقع CSS التالي

    <table>
        <tr>
            <td>
                <li>
                    <a href="/yourlink" >
</li> </td> </tr> </table>

"css=tr:nth-child(1) > td > li:nth-child(2) > a"

إذا لم ينجح ذلك ، فيمكنك دائمًا استخدام XPath. إنها معبرة تمامًا مثل محددات CSS ولكنها تميل إلى وجود عدد أقل من مواطن الخلل. الشيء الوحيد الذي عليك أن تضعه في الاعتبار عند استخدام XPaths هو أنها أبطأ بشكل عام من محددات CSS.

"xpath=//tr/td//li[2]/a" 
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top