我想做的是检查3个字符串之一是否存在,因此我希望它检查电子邮件地址或电子邮件,如果存在,它将发送输入,不确定如何执行此操作。
driver.find_element_by_xpath('//span[contains(text(),"email address")]')
driver.find_element_by_xpath('//span[contains(text(),"email")]')
我希望这些显示成一行,但不确定如何显示。
driver.implicitly_wait(1540)
driver.find_element_by_xpath('//span[contains(text(),"email address")]')
driver.find_element_by_xpath('//[@id="inputE"]').send_keys(email)
driver.find_element_by_xpath('//[@id="j_id0:j_id2:j_id3:j_id39"]/button').click()```
答案 0 :(得分:0)
您可以执行以下操作:
此xpath //[@id="inputE"]
,我将其更改为id
:inputE
,看起来很静态。
对于driver.implicitly_wait(1540)
和1540并没有任何要求,而是尽量减少在此的时间。
在这种情况下,您可以选择显式等待,也就是说,切勿将隐式与显式混合使用。
try:
if driver.find_element_by_xpath('//span[contains(text(),"email address")]').is_displayed():
driver.find_element_by_id('inputE').send_keys("email_address")
except NoSuchElementException:
print("Email address input field is not found")
答案 1 :(得分:0)
代替隐式使用显式等待条件 这是示例代码:
WebDriverWait wait= new WebDriverWait(driver, 20);
wait.until(ExpectedConditions.visibilityOf("Element_path"));
应用显式等待后,执行要执行的操作。
答案 2 :(得分:0)
使用WebDriverwait
和presence_of_all_elements_located
并使用xpath。然后检查元素的长度计数是否大于0,如果阻塞并执行其余代码,它将进入内部。
if (len(WebDriverWait(driver,20).until(EC.presence_of_all_elements_located((By.XPATH,"//span[contains(.,'email') or contains(.,'email address')]"))))>0):
driver.find_element_by_xpath('//*[@id="inputE"]').send_keys('email')
driver.find_element_by_xpath('//*[@id="j_id0:j_id2:j_id3:j_id39"]/button').click()
您需要添加以下导入内容以执行上述代码。
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
答案 3 :(得分:0)
这是示例xpath,您可以如何处理该问题。基本上,我们在这里检查div下是否有带有指定文本的跨度(根据您的应用程序层次结构更改此跨度)。
出于理解目的,我将两个跨度都添加到了相同的html中。我确信xpath会选择它们是否存在于给定路径中。
示例HTML:
<html>
<div>
<span>email</span>
<input placeholder="email"></input>
</div>
<div>
<span>email id</span>
<input placeholder="email id"></input>
</div>
<div>
<span>email address</span>
<input placeholder="email address"></input>
</div>
</html>
Xpath:
//div[contains("'email','email id'",span)]/input
截屏: