セレンを使用してリンクの完全なソースを取得する方法
-
07-07-2019 - |
質問
Selenium 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")
(javascriptで私を気にしないでください。)
他のヒント
これを行う最良の方法は、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());
}
String href = selenium.getAttribute(&quot; xpath = // a [@ id =&quot; specific-link&quot;] / @ href&quot;)
私はこれをやろうとして次のことを思いつきました:-
var selenium = Selenium;
string linkText = selenium.GetText(&quot; // a [@href = '/ admin / design-management']&quot;);
Assert.AreEqual(&quot;デザイン管理&quot ;, linkText);
以下のコードを使用して、ページ上のすべてのリンクを取得します。
$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++;
}
}
リンクが動的でない場合は、このかなり安っぽい、ハッキングなソリューションを試してください(これはPythonで行われます):
selenium.click("//a[text()='Link Text']")<br>
selenium.wait_for_page_to_load(30000)<br>
myurl = selenium.get_location()
Cheesyでも動作します。
注:リンクがリダイレクトされる場合、これは機能しません。
所属していません StackOverflow