كيفية الحصول على مصدر الكامل للارتباط باستخدام السيلينيوم

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

  •  07-07-2019
  •  | 
  •  

سؤال

وأنا باستخدام السيلينيوم RC وترغب في الحصول على كل الصفات وجميع. شيء من هذا القبيل:

link = sel.get_full_link('//a[@id="specific-link"]')

والنتيجة سيكون من:

print link

وستكون كما يلي:

<a id="specific-link" name="links-name" href="url"> text </a>

هل هذا ممكن؟

وذلك بفضل

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

المحلول

وهنا حل مربي الحيوانات:

sel.get_eval("window.document.getElementByID('ID').innerHTML")

و(لا يكون من الصعب إرضاءه معي على جافا سكريبت ..)

نصائح أخرى

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

والمثال Java التالي سيتم إخراج كافة الارتباطات إلى System.out:

selenium.open("http://www.example.com/");
String htmlSource = selenium.getHtmlSource();
Pattern linkElementPattern = Pattern.compile("<a\\b[^>]*href=\"[^>]*>(.*?)</a>");
Matcher linkElementMatcher = linkElementPattern.matcher(htmlSource);
while (linkElementMatcher.find()) {
    System.out.println(linkElementMatcher.group());
}

<وأ href = "http://release.seleniumhq.org/selenium-remote-control/0.9.0/doc/java/com/thoughtworks/selenium/Selenium.html#getAttribute٪28java.lang.String٪ 29 "يختلط =" نوفولو "> getAttribute

وسلسلة أ href = selenium.getAttribute ( "كسباث = // و[@ ID =" الارتباط محددة "] / @ أ href")

ولقد كنت تحاول أن تفعل هذا فقط، وخرجت بما يلي: -

وفار السيلينيوم السيلينيوم =؛

وسلسلة نص رابط = selenium.GetText ( "// ل[href = '/ المشرف / التصميم والإدارة']")؛

وAssert.AreEqual ( "إدارة التصميم"، نص رابط)؛

واستخدام رمز أدناه للحصول على كل الروابط على الصفحة:

$str3= "window.document.getElementsByTagName('a')";
$k = $this->selenium->getEval($str3);
$url = explode(",",$k);
$array_size = count($url);
$name=array();
$l=0;
for($i=0;$i<$array_size;$i++)
{
    if(!strstr($url[$i], 'javascript'))
    {
        $name[$l]=$url[$i];

        echo "\n".$name[$l];
        $l++;
    }
}

وإذا كان الارتباط لا الديناميكي، ثم حاول هذا الحل hacky جبني بدلا (وهذا هو في بايثون):

selenium.click("//a[text()='Link Text']")<br>
selenium.wait_for_page_to_load(30000)<br>
myurl = selenium.get_location()

وجبني ولكنه يعمل.

ملحوظة: هذا لن تعمل إذا الموجهات على الرابط

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