如何在 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
.
我正在使用下面的代码来测试登录 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
.