Domanda

Sto usando il selenio RC e voglio ottenere tutti gli attributi e tutto. Qualcosa del tipo:

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

e il risultato sarebbe:

print link

sarebbe:

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

È possibile?

grazie

È stato utile?

Soluzione

Ecco una soluzione più elaborata:

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

(non essere pignolo con me sul javascript ..)

Altri suggerimenti

Penso che il modo migliore per farlo sia quello di usare il comando getHtmlSource per ottenere l'intero sorgente HTML e quindi usare un'espressione regolare o un parser HTML per estrarre l'elemento di interesse.

Il seguente esempio Java genererà tutti i collegamenti a 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

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

Ho provato a fare proprio questo e ho pensato a quanto segue: -

var selenium = Selenio;

string linkText = selenium.GetText (" // a [@href = '/ admin / design-management'] ");

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

usa il codice qui sotto per ottenere tutti i link sulla pagina:

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

Se il collegamento non è dinamico, prova questa soluzione piuttosto scadente e confusa (presente in Python):

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

Cheesy ma funziona.

Nota: questo non funzionerà se il collegamento reindirizza.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top