2017-07-14 15 views
-1

kann nicht gefunden werden Ich habe das Skript mit Python und Selen implementiert, um auf die Anzeigen zu klicken. Aber jetzt funktioniert dieses Skript nicht. Das Element auf der Seite konnte nicht gefunden werden. Bitte helfen Sie mir das Skript zu korrigieren. Vielen Dank! enter image description herePython + Selen. Element

from selenium import webdriver 
import time 
browser=webdriver.Firefox() 
browser.get('http://rutracker.ignn.ru') 
browser.switch_to_frame(browser.find_element_by_xpath('//iframe[starts-with(@class,"tblock_")]')) 
browser.find_element_by_xpath("//a[contains(@href,'tmozs.com')]").click() 
time.sleep(10) 
browser.quit() 
+0

Bitte Fehler in der Frage angeben. –

+0

Traceback (letzter Aufruf zuletzt): Datei "e: \ python \ test3.py", Zeile 5, in browser.switch_to_frame (browser.find_element_by_xpath ('// iframe [startet mit (@class, "tblock_ ")] ')) Datei" C: \ Python27 \ lib \ Site-Pakete \ selen \ webdriver \ remote \ webdriver.py ", Zeile 293, in find_element_by_xpath return self.find_element (von = By.XPATH, value = xpath) Datei "C: \ Python27 \ lib \ Site-Pakete \ selen \ webdriver \ remote \ webdriver.py", Zeile 752, in find_element 'Wert': Wert}) ['Wert'] Datei "C: \ Python27 \ lib \ Site-Pakete \ selen \ webdriver \ remote \ webdriver.py ", Zeile 236, in Ausführung –

+0

self.error_handler.check_response (Antwort) Datei" C: \ Python27 \ lib \ Site-Pakete \ selen \ webdr iver \ remote \ errorhandler.py ", Zeile 192, in check_response raise ausnahmeklasse (message, screen, stacktrace) selenium.common.exceptions.NoSuchElementException: Nachricht: Element konnte nicht gefunden werden: // iframe [starts-with (@class , "tblock_")] –

Antwort

0

Sie können versuchen, einige Zeit zu warten, bis iframe in DOM, um es vor dem Einschalten erscheint erforderlich:

from selenium.webdriver.support import expected_conditions as EC 
from selenium.webdriver.support.ui import WebDriverWait as wait 

wait(browser, 10).until(EC.frame_to_be_available_and_switch_to_it(browser.find_element_by_xpath('//iframe[contains(@src, "//tmozs.com/")]'))) 
0

Hier ist die Antwort auf Ihre Frage ist:

Sie die verwenden können, Klicken Sie unterhalb des Codeblocks auf die Anzeige in der oberen linken Ecke:

Ich habe ausschließlich time.sleep() verwendet, um die Zeit bei der Herstellung dieser Lösung zu reduzieren. Alle time.sleep() kann durch Explicit Wait

from selenium import webdriver 
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary 
import time 

binary = FirefoxBinary('C:\\Program Files\\Mozilla Firefox\\firefox.exe') 
driver = webdriver.Firefox(firefox_binary=binary, executable_path="C:\\Utility\\BrowserDrivers\\geckodriver.exe") 
driver.get('http://rutracker.ignn.ru') 
time.sleep(5) 
driver.switch_to.frame(driver.find_element_by_xpath("//iframe[contains(@src,'tmozs.com/jsonp.php')]")) 
time.sleep(5) 
driver.find_element_by_xpath("//div[@class='feed-inner']/div[@class='feed-cell'][1]/a[@class='feed-cell-inner']/div[@class='teaser']/table[@class='teaser-inner']//img[contains(@src,'in.ogoyj.com')]").click() 
time.sleep(5) 
driver.quit() 

Lassen Sie mich ersetzt werden, ob dies Ihre Frage beantwortet.

+0

@AndrewF. Hast du eine Chance, meine Antwort zu überprüfen? Vielen Dank – DebanjanB