Wenn der Link in einem anderen Frame steht, dann mußt du erstmal in diesen Frame "wechseln" mit _FFFrameEnter.
Wenn dann passiert ist, beziehen sich alle nachfolgenden Befehle auf diesen Frame.
Text aus Internet Explorer oder Firefox lesen, dann...
-
- [ offen ]
-
TheWhiteDeath -
18. März 2009 um 15:15 -
Geschlossen -
Erledigt
-
-
So funktioniert auch.
Ich hoffe jetzt das letzte:
Kann ich ihn einen Text suchen lassen und ihn dann auf die Position dieses Textes klicken lassen?
-
Du brauchst den Text nicht erst suchen, ein einfaches:
_FFClickLink($Socket,"GesuchterText","text")
reicht um den Link mit "GesuchterText" anzuklicken. Kann auch ein nur Teilstring davon sein. -
Komischerweise will er mir nicht auf den Link klicken.. lesen kann er ihn aber wenn ich ihn nur suche.
-
Um welche Seite handelt es sich denn?
-
Handelt sich um eine Seite die ich selbst gemacht hab und die imo nur bei mir lokal läuft.. deshalb wunder ich mich auch so.. is nix anderes als hier dieses "Abmelden".. sieht fast genauso aus. frage: warum steht im editor folgendes:
[autoit]__FFSend: FF_AutoItScript.SearchLink("text","blabla","top")
[/autoit]es geht mir um das "top"
-
Das "top" ist der "top"-Frame, das wird dort immer stehen, solange kein anderer Frame aufgerufen wurde (_FFFrameEnter).
Top-Frame ist auch eine ganz "normale" Seite ohne Frames.Schau dir einfach mal das Beispiel an:
Spoiler anzeigen
[autoit]#include <FF.au3>
[/autoit] [autoit][/autoit] [autoit]$Socket = _FFStart("http://thorsten-willert.de",default,2)
[/autoit] [autoit][/autoit] [autoit]If $Socket <> -1 Then
[/autoit] [autoit][/autoit] [autoit]
; Frame anwaehlen - alle nachfolgenden Befehle finden in diesem Frame statt
_FFFrameEnter($Socket,0)
If Not @error Then
If _FFClickLink($Socket,"AutoIt-FF.au3","text") Then
_FFLoadWait($Socket)
If _FFClickLink($socket,"German/index.php") Then
_FFLoadWait($Socket)
; anderen Frame anwaehlen
_FFFrameEnter($Socket,"TW_view","name")
If Not @error Then
_FFClickLink($Socket,"_FFFormCheckBox","text")
sleep(3000)
; wird im aktuellen Frame geoeffnet!!!
_FFOpenURL($Socket,"http://ff-au3-example.thorsten-willert.de/")
EndIf
EndIf
EndIf
EndIf
; Frame wieder verlassen
_FFFrameLeave($Socket)sleep(3000)
[/autoit] [autoit][/autoit] [autoit]
_FFOpenURL($Socket,"http://texturen.thorsten-willert.de")_FFDisConnect($Socket)
[/autoit] [autoit][/autoit] [autoit][/autoit]
EndIf -
Achso das heißt es sucht also NUR in der Frame nach dem link.. Aber bei der Textsuche sucht es überall? (dort findet es ja die link namen)
Also muss ich dann in Frame 1,2,3 wechseln richtig?
edit: am testen
-
Genau, die frameweite Suche in _FFSearch ist standardmäßig an.
Um andere Befehle in einem Frame auszuführen mußt zu diesem wechseln. -
Ach super es funktioniert !
Vielen vielen Dank.
Noch etwas..
was wenn ich zum Beispiel etwas habe wie
ja "antworten"
nein "antworten"
vielleicht "antworten"und nur das antworten ist der link..
kann ich ihn dann dazu bringen es bei dem vielleicht "antworten" zu klicken? sind ja 3 "gleiche" links -
Du hast die Qual der Wahl bei _FFClickLink.
[autoit]
Du kannst auch den Link auch Anhand der "href" anklicken lassen:_FFClickLink($Socket,"http://klickmich.gibtsnet")
[/autoit] -
Also es gibt keine möglichkeit
vielleicht link
ja link
nein linkdazu zu bringen nur den link anzuklicken? (da der href sich ändert)
-
Doch über z.B über den Index, falls der gleich bleibt, oder über die IDs oder ...
Wie sieht denn der Quelltext an der Stelle aus? -
Also:
es sind viele verschiedene möglichkeiten was geklickt werden kann:
hallo antworten
halli antworten
hass antworten
blabla antwortenid etc ändert sich jedesmal is n wenig kompliziert..
Wenns diese möglichkeit nicht gibt krieg ichs aber auch anders umständlich hin.. wäre jetz kein weltuntergangedit sagt:
im Quellcode sieht das so aus:
<b>blablabla</b> lalala <a href="antwor_id12345345">antworten</a>
-
Mehr gibts da nicht?
-
also text, was dazwischen, link
blablabla "hier steht auch was" ~link~
<b>blaaal</b> *hier steht was* <a href="antwort.php?action=activate&asw_id=54324291">antworten</a>
etwas ausführlicher
eigentlich ganz simpel, aber für jedes die Href raussuchen etc is eben noch n riesen haufen arbeit..
-
Ist da vielleicht noch mehr außen herum? Irgendwelche DIVs oder eine Tabelle?
-
öhm ja jede menge halt schon..
<p class="listanswrow"><b>antwort1</b> Nummer7 <a href="answer.php?action=activate&asw_id=54179939">antworten</a>)<br>
<p class="listanswrow"><b>antwort2</b> Nummer6 <a href="answer.php?action=activate&asw_id=65446444">antworten</a>)das is jetz einfach einmal komplett
öhm davor is eigentlich sonst nix mehr großesausser vlt du meinst das:
<div align="center" style="margin-top: 10px; margin-bottom: 10px;"><img src="../images/answ_divider.gif" width="234" height="11" alt="" border="0"></div>
edit sagt:
ich krieg hin, dass er das erste benutzt.. aber mehr auch noch nicht. ich probier morgen mal rum bin dann mal schlafen
VIelen Dank nochmal Stilgar
-
Na also.
Könnte so aussehn:Spoiler anzeigen
[autoit]#include <FF.au3>
[/autoit] [autoit][/autoit] [autoit]
$Socket = _FFConnect()$sAntwort = "antwort2"
[/autoit] [autoit][/autoit] [autoit]$sHREF = _FFXPath($Socket,"//p[@class='listanswrow' and contains(.,'" & $sAntwort & "')]/a","href",5)
[/autoit]
If Not @error Then _FFOpenURL($Socket, $sHREF)In dem Fall wird der link bei "antwort2" geöffnet.
[EDIT]
Ich glaub da ist eine Erklärung nötigSucht ein Element "a" innerhalb von Element "p" mit der "class='listanswrow'" das einen Text $sAntwort enthält - contains()
[autoit]_FFXPath($Socket,"//p[@class='listanswrow' and contains(.,'" & $sAntwort & "')]/a","href",5)
[/autoit]
davon wird dann die "href" zurückgegeben im _FFXPath Modus 5 (FIRST_ORDERED_NODE_TYPE). Das heist, daß das erste Element das diesen Kriterien entspricht wird zurückgegeben.[EDIT2]
Fehlerabfrage eingefügt. -