Frage

Ich bin mit Selen RC und wollen alle Attribute und alle zu bekommen. So etwas wie:

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

und das Ergebnis wäre:

print link

wäre:

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

Ist das möglich?

Dank

War es hilfreich?

Lösung

Hier ist eine ausgefallenere Lösung:

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

(nicht wählerisch sein bei mir auf dem Javascript, ..)

Andere Tipps

Ich denke, der beste Weg, dies zu tun wäre, um den getHtmlSource Befehl zu verwenden, um die gesamte HTML-Quelle zu bekommen, und dann entweder einen regulären Ausdruck oder HTML-Parser das Element von Interesse zu extrahieren.

Das folgende Java-Beispiel gibt alle Links zu 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());
}

getAttribute

String href = selenium.getAttribute ( "xpath = // a [@ id =" specific-Link "] / @ href")

Ich habe gerade dies zu tun versucht, und kam mit dem folgenden: -

var Selen = Selen;

string linktext = selenium.GetText ( "// a [@href = '/ admin / Design-Management']");

Assert.AreEqual ( "Design Management", linktext);

Verwendung unter Code zu bekommen, alle Links auf der Seite:

$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++;
    }
}

Wenn die Verbindung nicht dynamisch ist, dann versuchen, diese eher kitschig, hacky Lösung (Dies ist in Python):

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

Cheesy aber es funktioniert.

Hinweis: das wird nicht funktionieren, wenn der Link leitet

.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top