【问题标题】:Trying to print results on terminal Using Selenium on Mac OS VS Code尝试在 Mac OS VS Code 上使用 Selenium 在终端上打印结果
【发布时间】:2020-11-20 18:42:09
【问题描述】:

我是 Python 和 Selenium 的新手

我试图运行的代码应该在终端上打印亚马逊结果:

第一个代码是。 :

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys
import time

PATH = "/Users/fuadhafiz/Documents/Python Projects/Selenium Automation /Web Scraping (1)/chromedriver"
driver = webdriver.Chrome(PATH)
driver.get("https://www.amazon.co.uk/")

search = driver.find_element_by_id("twotabsearchtextbox")
search.send_keys("usb c to hdmi")
search.send_keys(Keys.RETURN)

try:
    main = WebDriverWait(driver, 5).until(
        EC.presence_of_element_located((By.CLASS_NAME, "s-main-slot s-result-list s-search-results sg-row"))
    )
    print(main.text)
except:
    driver.quit()



driver.quit()

这会正确打开所有内容,但不会将结果打印到终端上

第二个代码我累了:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys
import time

PATH = "/Users/fuadhafiz/Documents/Python Projects/Selenium Automation /Web Scrapping (1)/chromedriver"
driver = webdriver.Chrome(PATH)
driver.get("https://www.amazon.co.uk/")

search = driver.find_element_by_id("twotabsearchtextbox")
search.send_keys("usb c to hdmi")
search.send_keys(Keys.RETURN)

try:
    main = WebDriverWait(driver, 5).until(
        EC.presence_of_element_located((By.CLASS_NAME, "s-main-slot s-result-list s-search-results sg-row"))
    )
    
except:
    driver.quit()

print(main.text)

driver.quit() 

但是使用第二个代码,它不断出现这个错误?

print(main.text)
NameError: name 'main' is not defined

【问题讨论】:

  • 我很确定您在 try/except 中遇到错误。您应该在期望中添加错误异常类,这样您就不想处理这种情况。所以现在你需要做的就是注释或删除 try except 或运行你的代码而不使用 try except 并粘贴你得到的异常。
  • 您可以通过将 except: driver.quit() 更新为 except: print("Error") driver.quit() 来验证您在 try/except 中是否遇到错误,请记住缩进。
  • 我不知道它是否在 try/except 中。我已将其更改为您的代码,它仍然说 main isnt defined
  • 您是否在终端/cmd 中打印了“错误”str?您应该向我展示您的新输出。
  • (1)/amazon_search.py​​" Traceback(最近一次调用最后):文件“/Users/fuadhafiz/Documents/Python Projects/Selenium Automation /Web Scrapping (1)/amazon_search.py​​”,第 24 行,在 print(main) NameError: name 'main' is not defined fuadhafiz@Fuads-iMac Web Scrapping (1) %

标签: python python-3.x selenium web-scraping


【解决方案1】:

你的 try/except 和你的 css 选择器和你的代码结构中的问题。

你需要试试这个代码。

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys
from selenium.common.exceptions import TimeoutException
import time

driver = webdriver.Chrome()
driver.get("https://www.amazon.co.uk/")

search = driver.find_element_by_id("twotabsearchtextbox")
search.send_keys("usb c to hdmi")
search.send_keys(Keys.RETURN)

try:
    main = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, ".s-main-slot")))
    print(main.text)
except TimeoutException:
    print("Timeout")

driver.quit() 

【讨论】:

  • 有效!但是,在 VS Code 的问题选项卡中,它显示 Undefined variable 'TimeoutException'
【解决方案2】:

您似乎没有创建名为“main.txt”的变量,这就是它不打印的原因。如果你确实做了一个,它不工作的原因也可能是因为你不能在变量名中有句点。

【讨论】:

  • 好吧,我把它改成了 print(main) 但它现在说 main isnt defined ?
猜你喜欢
  • 2019-10-28
  • 1970-01-01
  • 2021-11-20
  • 2020-01-20
  • 2022-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-25
相关资源
最近更新 更多