Python + Selenium。无法找到元素
问题描述:
我已经使用Python和硒实现了脚本来点击广告。 但现在这个脚本不起作用。 无法在页面上找到元素。 请帮我改正脚本。谢谢! Python + Selenium。无法找到元素
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()
答
您可以尝试等待一段时间,直到需要iframe
出现在DOM
开关之前它:
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/")]')))
答
这里是回答你的问题:
可以使用在代码块下方点击左上角的广告:
我已专门使用
time.sleep()
来缩短准备此解决方案的时间。所有time.sleep()
可以通过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()
让我知道如果这个回答你的问题所取代。
+0
@AndrewF。你有机会看看我的答案吗?谢谢 – DebanjanB
请在问题中包含错误。 –
Traceback(最近一次调用最后一次): 文件“e:\ python \ test3.py”,第5行,在 browser.switch_to_frame('// iframe [starts-with(@class,“tblock_ “)]')) find_element_by_xpath中的第293行文件”C:\ Python27 \ lib \ site-packages \ selenium \ webdriver \ remote \ webdriver.py“ return self.find_element(by = By.XPATH,value = xpath) 文件“C:\ Python27 \ lib \ site-packages \ selenium \ webdriver \ remote \ webdriver.py”,第752行,在find_element中 'value':value})['value'] “ \ Python27 \ lib \ site-packages \ selenium \ webdriver \ remote \ webdriver.py“236行,执行 –
self.error_handler.check_response(响应) 文件”C:\ Python27 \ lib \ site-packages \ selenium \ webdr iver \ remote \ errorhandler.py“,第192行,in check_response raise exception_class(message,screen,stacktrace) selenium.common.exceptions.NoSuchElementException:消息:无法定位元素:// iframe [starts-with(@class ,“tblock_”)] –