【发布时间】:2021-07-13 09:23:11
【问题描述】:
【问题讨论】:
-
你能分享一个网页链接吗?
I am wanting to state whether this text 'Awaiting Review' is true or not是什么意思?您是否要查找页面上是否存在带有文本“等待审核”的元素,或者其内部的特定元素是否是具有此文本的父元素?
【问题讨论】:
I am wanting to state whether this text 'Awaiting Review' is true or not 是什么意思?您是否要查找页面上是否存在带有文本“等待审核”的元素,或者其内部的特定元素是否是具有此文本的父元素?
由于您在 DevTools 中,您可以右键单击并选择“复制 XPath”。这将为您提供一个特定且唯一的元素选择器,因此您无需担心从根开始计算父 div!学习 XPaths 是一个很棒的工具,请看这里:https://www.w3schools.com/xml/xpath_syntax.asp
然后在你的 Selenium 代码中你可以写:
awaiting_review = driver.find_element_by_xpath('# paste xpath here').text
if awaiting_review == 'Awaiting Review':
# whatever you want to happen
【讨论】:
NoSuchElement异常
要简单地验证页面上是否存在包含该文本的元素,您可以这样做:
if driver.find_elements(By.XPATH, "//span[contains(text(), 'Awaiting Review')]"):
print("Element is presented")
else:
print("Eelement not found")
driver.find_elements 返回与传递的定位符匹配的元素列表。
因此,如果页面上有一个包含Awaiting Review 文本的span 元素,它将返回它。否则它将返回一个空列表。
Python 将非空列表视为True,而空列表为False。
【讨论】:
self 之前的(By.XPATH) 还是driver.find_elements 之后的(By.XPATH)?
driver.find_elements_by_xpath :)
请试试这个。
elems = driver.find_elements_by_css_selector("#vacancy-pipeline-header>header>div>span")
if elems:
if elems[0].text == "Awaiting Review":
print('valid!')
else
print('invalid!')
else
print('Element is not exist!')
如果你熟悉 CSS 选择器,那对你有好处。
【讨论】:
解释 :- 使用//span[contains(text(), 'Awaiting Review')] 可以定位元素并可以使用find_elements 检查size if > 0 是否存在,如果是,则可以断言,(我只是使用打印) 如果不是,代码将转到 else 部分。
你可以试试下面的代码:
try:
if len(driver.find_elements(By.XPATH, "//span[contains(text(), 'Awaiting Review')]")) > 0 :
print("Awaiting Review is present")
else:
print("Awaiting Review is not present")
except:
print("something went wrong. ")
pass
更新 1:
try:
if len(driver.find_elements(By.CSS_SELECTOR, "div#air-pipeline-board heade.air-pipeline-lane span")) > 0 :
print("Awaiting Review is present")
else:
print("Awaiting Review is not present")
except:
print("something went wrong. ")
pass
【讨论】: