0

ブラウザの「ソースの表示」と「要素の検査」には違いがあることを知りました。特定のWebページでFirefoxで「検査」を使用すると、次のようになります。

<html>
 ...
    <div class="someClass" id="someID" style="z-index: 12001; left: 0px; top: -487px; width: 1288px; height: 843px; opacity: 0.7; visibility: visible;">
 ...
</html>

ただし、「ソースの表示」を使用すると、この要素は表示されません。Spynner を介して Web ページにアクセスし、html を解析すると、要素が表示されないという問題が発生します。「可視性」の価値を知る必要があるので、私の質問は次のとおりです。Spynner 内で DOM にアクセスするにはどうすればよいですか?

私はすでに次のソースコードを試しました:

br = spynner.Browser()
br.show()
br.load(url)
ret = br.runjs('document.getElementById('someID');")
print ret

しかし、これは印刷されるだけです:

<PyQt4.QtCore.QVariant object at 0x9870e64>

///

編集

ret は QVariant であるため、コードを変更して PyObject に変換することができました。

ret = br.runjs('document.getElementById('someID').getAttribute('style');")
print ret.toPyObject()

私が今持っている唯一の問題は、印刷は「スタイル」の最初の値のみを表示することです

z-index: 9999;

どうにかして他の値 (左、上、高さ、不透明度、可視性) にアクセスできますか?

4

2 に答える 2

0

コードをいじったことがわかりました。「someID」の代わりに「someOtherID」を挿入しましたが、これには探していた属性が含まれていませんでした。このばかげた間違いは私に多くの時間を費やしました。

それからもう 1 つは、私が探していた要素は Java PopUp です。ユーザーが許可されていない入力を行うと、このポップアップが表示され、確認する必要があります。したがって、ポップアップが「表示」されているかどうかを確認する代わりに、確認ボタンが「無効になっていない」かどうかを確認します。これは次の方法で行われます。

val items = document.getElementsByTagName('input');

for(var i=0; i<items.length; i++){
  if(items[i].getAttribute('name') == inputName){
    if(items[i].getAttribute('disabled') == null){
      items[i].click();}}}

この js コードは、spynner 内の runjs() メソッドを介して呼び出されます。解決策は歩行者かもしれませんが、私にとってはうまくいきます。また、このソリューションは非常に具体的であることも知っています。でも、いつか誰かが同じような問題を抱えているかもしれません。

于 2014-12-29T21:47:44.943 に答える