Как получить полный источник ссылки с использованием селена - PullRequest
4 голосов
/ 13 сентября 2009

Я использую Селен RC и хочу получить все атрибуты и все. Что-то вроде:

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

и результат будет:

print link

будет:

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

Возможно ли это?

спасибо

Ответы [ 6 ]

4 голосов
/ 27 апреля 2011

Вот более интересное решение:

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

(не придирайтесь ко мне в JavaScript ...)

3 голосов
/ 14 сентября 2009

Я думаю, что лучший способ сделать это - использовать команду 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());
}
1 голос
/ 21 сентября 2011

GetAttribute

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

0 голосов
/ 24 августа 2012

используйте код ниже, чтобы получить все ссылки на странице:

$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++;
    }
}
0 голосов
/ 29 сентября 2011

Я пытался сделать именно это и придумал следующее: -

вар селен = селен;

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

Assert.AreEqual («Управление проектами», linkText);

0 голосов
/ 16 января 2010

Если ссылка не динамическая, попробуйте это довольно глупое, хакерское решение (это на Python):

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

Дрянной, но это работает.

Примечание: это не будет работать, если ссылка перенаправляет.

...