如何在 Python Selenium 的控制台中打印消息

How to print messages in console in Python Selenium

我正在使用下面的代码来测试登录 website.The 代码打开网页并等待元素加载,然后使用提供的凭据登录。我在代码里放了一些信息让我识别代码是不是运行。但是,它不起作用。

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

options = Options()

options.add_argument("--headless")
options.add_argument("--no-sandbox")

s = Service("/usr/local/bin/chromedriver")
url = "https://atf.domain.com/"
driver = webdriver.Chrome(options=options, service=s)
driver.get(url)
print(driver.title)

try:
# wait 10 seconds before looking for element
element = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, "username"))
    print("Page loaded!")
)
except TimeoutException:
print("Page not loaded!")


driver.find_element(By.ID, "username").send_keys("email@gmail.com")
driver.find_element(By.ID, "password").send_keys("password")
driver.find_element(By.ID, "signinButton").click()

try:
# wait 10 seconds before looking for element
element = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, "compose-delivery-link"))
    print("Compose delivery page loaded!")
)
except TimeoutException:
print("Compose delivery page not loaded!")

driver.find_element(By.ID, "compose-delivery-link").click()


driver.close()

我遇到错误,

File "sft_login_test.py", line 24
print('Page loaded!')
    ^
SyntaxError: invalid syntax

我不知道如何解决这个问题。非常感谢任何帮助。

element = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, "username"))
)
print("Page loaded!")

我想 print 调用应该在 .until 参数之外。

您不小心在 .until() 的括号内写了对 print() 的调用 都在 第 23 行

element = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, "username"))
    print("Page loaded!")
)

并在 第 37 行

element = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, "compose-delivery-link"))
    print("Compose delivery page loaded!")
)

此外,您需要从 selenium.common.exceptions 导入 TimeoutException,因为这很可能是您遇到的下一个错误。

并提供一些辅助信息,WebDriverWait 实际上在查找元素之前不会等待 10 秒。它而是在设定的时间间隔内检查条件 (此处存在 ID 分别为“名称”或“密码”的元素),直到找到该元素,在这种情况下为元素返回,或者达到时间限制 (此处为 10 秒),在这种情况下它会抛出 TimeoutException.