我使用“selenium”來定位 Python3.9.6 64 位的資訊。有時它會輸出一些正確的結果,但在完成 10 項任務中的一些任務后突然崩潰。但有時它根本不起作用。代碼是這樣的:
from selenium.webdriver import Chrome
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
import time
web = Chrome()
web.get("http://lagou.com")
web.find_element(By.XPATH, '//*[@id="cboxClose"]').click()
time.sleep(1)
web.find_element(By.XPATH, '//*[@id="search_input"]').send_keys("python", Keys.ENTER)
for i in range(1, 11):
web.find_element(By.XPATH, f'//*[@id="jobList"]/div[1]/div[{i}]/div[1]/div[1]/div[1]/a').click()
web.switch_to.window(web.window_handles[-1])
details = web.find_element(By.XPATH, '//*[@id="job_detail"]/dd[2]/div').text
print(details)
web.close()
web.switch_to.window(web.window_handles[0])
而crach資訊是這樣的
File "/Users/xxxx/Library/Mobile Documents/com~apple~CloudDocs/xxxx/Code/Python/Project/selenium(2).py", line 20, in <module>
details = web.find_element(By.XPATH, '//*[@id="job_detail"]/dd[2]/div').text
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/selenium/webdriver/remote/webdriver.py", line 1244, in find_element
return self.execute(Command.FIND_ELEMENT, {
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/selenium/webdriver/remote/webdriver.py", line 424, in execute
self.error_handler.check_response(response)
File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/selenium/webdriver/remote/errorhandler.py", line 247, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@id="job_detail"]/dd[2]/div"}
(Session info: chrome=97.0.4692.71)
Stacktrace:
0 chromedriver 0x000000010fa0fe69 chromedriver 5160553
1 chromedriver 0x000000010f99a593 chromedriver 4679059
2 chromedriver 0x000000010f54e2c8 chromedriver 172744
3 chromedriver 0x000000010f583b62 chromedriver 392034
4 chromedriver 0x000000010f583d21 chromedriver 392481
5 chromedriver 0x000000010f5b6304 chromedriver 598788
6 chromedriver 0x000000010f5a13fd chromedriver 513021
7 chromedriver 0x000000010f5b40ab chromedriver 589995
8 chromedriver 0x000000010f5a1623 chromedriver 513571
9 chromedriver 0x000000010f576dce chromedriver 339406
10 chromedriver 0x000000010f578105 chromedriver 344325
11 chromedriver 0x000000010f9cb23e chromedriver 4878910
12 chromedriver 0x000000010f9e2d17 chromedriver 4975895
13 chromedriver 0x000000010f9e8a3f chromedriver 4999743
14 chromedriver 0x000000010f9e361a chromedriver 4978202
15 chromedriver 0x000000010f9bfbb1 chromedriver 4832177
16 chromedriver 0x000000010f9fffd8 chromedriver 5095384
17 chromedriver 0x000000010fa00161 chromedriver 5095777
18 chromedriver 0x000000010fa172a8 chromedriver 5190312
19 libsystem_pthread.dylib 0x00007fff204ab8fc _pthread_start 224
20 libsystem_pthread.dylib 0x00007fff204a7443 thread_start 15
情況如何?
uj5u.com熱心網友回復:
我已經多次運行您的代碼,是的,它在隨機迭代后崩潰。這表明某些代碼某些軟體沒有完成執行。此外,我的一次運行完成了所有 10 次迭代。所以。支持我的理論。
所以。解決方案是添加這個
time.sleep(3)
在回圈結束時。或者只是在轉到鏈接之前添加此行。這對于將來的更新更好。
web.implicitly_wait(10)
您可以在selenium 等待檔案中閱讀更多相關資訊
uj5u.com熱心網友回復:
我使用SeleniumBase Python 框架使腳本可靠:運行pip install seleniumbase,然后運行以下測驗pytest:
from seleniumbase import BaseCase
class MyTestClass(BaseCase):
def test_base(self):
self.open("http://lagou.com")
self.click("#cboxClose")
self.type("#search_input", "python\n")
for i in range(1, 11):
self.click('#jobList > div > div:nth-of-type(%s) a' % i)
details = self.get_text("#job_detail > dd:nth-of-type(2) > div")
print(details)
self.driver.close()
self.switch_to_window(0)
另外,由于網站是中文的,你可能會喜歡SeleniumBase的中文翻譯中的腳本:
from seleniumbase.translate.chinese import 硒測驗用例
class MyTestClass(硒測驗用例):
def test_base(self):
self.開啟("http://lagou.com")
self.單擊("#cboxClose")
self.輸入文本("#search_input", "python\n")
for i in range(1, 11):
self.單擊('#jobList > div > div:nth-of-type(%s) a' % i)
details = self.獲取文本("#job_detail > dd:nth-of-type(2) > div")
print(details)
self.driver.close()
self.切換到視窗(0)
這兩個檔案將運行相同,可靠。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/408355.html
標籤:
