【发布时间】:2021-08-04 14:12:09
【问题描述】:
我的代码有问题,希望有人能帮我解决这个问题
import selenium
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
from selenium.webdriver import ActionChains
PATH = "C:\Program Files (x86)\chromedriver.exe"
driver = webdriver.Chrome(PATH)
driver.get("https://ofersale.ofermalls.co.il/LogoHunter/?utm_source=&utm_medium=&utm_campaign=&tp=replay")
#print(driver.self.driver.title)
search = driver.find_element_by_name("theCode")
search.send_keys("135205")
search.send_keys(Keys.RETURN)
inputt = driver.find_element_by_xpath('//a[@href="javascript: CheckCode()"]')
inputt.click()
try:
#yolo element
picture = driver.find_element_by_xpath('//img[@src="images/yolo.jpg"]')
except:
driver.find_element_by_xpath('//img[@src="images/yolo.jpg"]')
else:
try:
#yolo element
picture = driver.find_element_by_xpath('//img[@src="images/golf.jpg"]')
except:
picture = driver.find_element_by_xpath('//img[@src="images/golf.jpg"]')
else:
try:
#yolo element
picture = driver.find_element_by_xpath('//img[@src="images/vardinon.jpg"]')
except:
picture = driver.find_element_by_xpath('//img[@src="images/vardinon.jpg"]')
else:
try:
#yolo element
picture = driver.find_element_by_xpath('//img[@src="images/miniso.jpg"]')
except:
picture = driver.find_element_by_xpath('//img[@src="images/miniso.jpg"]')
else:
try:
#yolo element
picture = driver.find_element_by_xpath('//img[@src="images/stemanski.jpg"]')
except:
picture = driver.find_element_by_xpath('//img[@src="images/stemanski.jpg"]')
else:
try:
#yolo element
picture = driver.find_element_by_xpath('//img[@src="images/jump_onot.jpg"]')
except:
picture = driver.find_element_by_xpath('//img[@src="images/jump_onot.jpg"]')
else:
try:
#yolo element
picture = driver.find_element_by_xpath('//img[@src="images/timberland.jpg"]')
except:
picture = driver.find_element_by_xpath('//img[@src="images/timberland.jpg"]')
else:
try:
#yolo element
picture = driver.find_element_by_xpath('//img[@src="images/crazy_line.jpg"]')
except:
picture = driver.find_element_by_xpath('//img[@src="images/crazy_line.jpg"]')
else:
try:
#yolo element
picture = driver.find_element_by_xpath('//img[@src="images/nautica.jpg"]')
except:
picture = driver.find_element_by_xpath('//img[@src="images/nautica.jpg"]')
else:
try:
#yolo element
picture = driver.find_element_by_xpath('//img[@src="images/polgat.jpg"]')
except:
picture = driver.find_element_by_xpath('//img[@src="images/polgat.jpg"]')
else:
try:
#yolo element
picture = driver.find_element_by_xpath('//img[@src="images/gali.jpg"]')
except:
picture = driver.find_element_by_xpath('//img[@src="images/gali.jpg"]')
else:
print("error while trying to find an xpath")
#main = driver.find_element_by_id("main")
#time.sleep(5)
#sel:driver.quit()
这是代码,问题是当我运行代码时,这是我得到的输出:
Traceback (most recent call last):
File "D:\Sublime Text 3\web2", line 23, in <module>
picture = driver.find_element_by_xpath('//img[@src="images/yolo.jpg"]')
File "C:\Users\itay\AppData\Roaming\Python\Python39\site-packages\selenium\webdriver\remote\webdriver.py", line 394, in find_element_by_xpath
return self.find_element(by=By.XPATH, value=xpath)
File "C:\Users\itay\AppData\Roaming\Python\Python39\site-packages\selenium\webdriver\remote\webdriver.py", line 976, in find_element
return self.execute(Command.FIND_ELEMENT, {
File "C:\Users\itay\AppData\Roaming\Python\Python39\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "C:\Users\itay\AppData\Roaming\Python\Python39\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//img[@src="images/yolo.jpg"]"}
(Session info: chrome=92.0.4515.131)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "D:\Sublime Text 3\web2", line 25, in <module>
driver.find_element_by_xpath('//img[@src="images/yolo.jpg"]')
File "C:\Users\itay\AppData\Roaming\Python\Python39\site-packages\selenium\webdriver\remote\webdriver.py", line 394, in find_element_by_xpath
return self.find_element(by=By.XPATH, value=xpath)
File "C:\Users\itay\AppData\Roaming\Python\Python39\site-packages\selenium\webdriver\remote\webdriver.py", line 976, in find_element
return self.execute(Command.FIND_ELEMENT, {
File "C:\Users\itay\AppData\Roaming\Python\Python39\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "C:\Users\itay\AppData\Roaming\Python\Python39\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//img[@src="images/yolo.jpg"]"}
(Session info: chrome=92.0.4515.131)
如果有人知道我该如何解决这个问题,我会很高兴的。
非常感谢!
【问题讨论】:
-
要么捕获这个异常,要么检查元素是否存在。这发生在
except部分,所以你不会抓住它。您实际上正在做同样的事情,这首先导致了异常。另外,请不要在这里转储整个代码。此外,根据经验,如果缩进如此深入,并且必须复制粘贴代码的一部分,那么您应该重新考虑您在做什么并寻找更好的方法。 -
错误消息说还找不到元素。虽然页面中可能没有这样的元素,但也有可能该元素已加载到页面中。您可能想要搜索隐式等待硒以获取更多详细信息。
-
在每个
except中运行与try完全相同的代码 - 因此它可能会再次生成相同的错误,但现在它不在try内,因此会引发错误。except不会捕获您在except中的代码中的错误 - 它需要另一个try/except。但我不明白你为什么运行完全相同的代码。也许你应该使用sleep来等待这个元素,或者你应该把它放在try/except或者你应该在Selenium 中使用waits
标签: python python-3.x selenium selenium-webdriver selenium-chromedriver