如何验证元素是否存在并通过 Selenium 和 Python 调用 send_keys 方法
How to validate if an element exists and invoke send_keys method through Selenium and Python
这是我的 HTML 代码。当我点击一个按钮时,页面显示 div 代码如下:
<label for="email"> "Add an email address"
<input name="email" id="email" class="mb3 ember-text-field ember-view"type="email">
</label>
我要做的第一件事是检查我是否有 <input>
。如果是,我想做 send_keys()
.
我试过这样的事情:
buttons = (driver.find_elements_by_css_selector(".button-secondary-medium"))
for i in range(len(buttons)):
buttons[i].click()
y = randint(5, 9)
time.sleep(y)
try:
email = ui.WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.ID, "email")))
email.send_keys(" paul@yahoo.com")
except:
print("no input")
我有一个按钮列表,每个按钮显示一个空白 div
有时
按钮显示带有输入电子邮件的 div。
您可以使用以下代码:
from selenium.webdriver.support import ui
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
buttons = driver.find_elements_by_css_selector(".button-secondary-medium")
for button in buttons:
button.click()
try:
email = ui.WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.ID, "email")))
email.send_keys("paul@yahoo.com")
except:
print("There is no input element.")
我在这里使用显式等待和 10 秒等待元素变得可点击且难以处理。 try/except
块用于检查 input
是否存在。
PS:另外,我不明白 find_element_*
的复数形式的用法,因为你的 HTML 代码中只有一个 input
元素.
希望对您有所帮助!
如果你想检查 input 标签并调用 send_keys()
你需要在 [=] 中引入 WebDriverWait 13=] 块用于 element_to_be_clickable()
,您可以使用以下解决方案:
代码块:
try:
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//label[@for='email']"))).send_keys("Paul@Vio.com")
except TimeoutException:
print("Element doesn't exist")
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
这是我的 HTML 代码。当我点击一个按钮时,页面显示 div 代码如下:
<label for="email"> "Add an email address"
<input name="email" id="email" class="mb3 ember-text-field ember-view"type="email">
</label>
我要做的第一件事是检查我是否有 <input>
。如果是,我想做 send_keys()
.
我试过这样的事情:
buttons = (driver.find_elements_by_css_selector(".button-secondary-medium"))
for i in range(len(buttons)):
buttons[i].click()
y = randint(5, 9)
time.sleep(y)
try:
email = ui.WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.ID, "email")))
email.send_keys(" paul@yahoo.com")
except:
print("no input")
我有一个按钮列表,每个按钮显示一个空白 div
有时
按钮显示带有输入电子邮件的 div。
您可以使用以下代码:
from selenium.webdriver.support import ui
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
buttons = driver.find_elements_by_css_selector(".button-secondary-medium")
for button in buttons:
button.click()
try:
email = ui.WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.ID, "email")))
email.send_keys("paul@yahoo.com")
except:
print("There is no input element.")
我在这里使用显式等待和 10 秒等待元素变得可点击且难以处理。 try/except
块用于检查 input
是否存在。
PS:另外,我不明白 find_element_*
的复数形式的用法,因为你的 HTML 代码中只有一个 input
元素.
希望对您有所帮助!
如果你想检查 input 标签并调用 send_keys()
你需要在 [=] 中引入 WebDriverWait 13=] 块用于 element_to_be_clickable()
,您可以使用以下解决方案:
代码块:
try: WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//label[@for='email']"))).send_keys("Paul@Vio.com") except TimeoutException: print("Element doesn't exist")
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC