查找元素并单击。如果没有找到转到下一页
FInd Element and Click. If Not Found goto next page
您好,我有以下第 1 页元素的代码。
<span _ngcontent-iyc=""class="ng-star-inserted">ELEMENT 1</span>
<span _ngcontent-iyc=""class="ng-star-inserted">ELEMENT 2</span>
<span _ngcontent-iyc=""class="ng-star-inserted">ELEMENT 3</span>
<span _ngcontent-iyc=""class="ng-star-inserted">ELEMENT 4</span>
同样,我还有 4 个包含不同元素的页面。
我需要的是使用 selenium python 找到一个元素,如果该元素存在于该页面中,则单击它。否则点击下一页,在那里搜索元素,直到找到元素。
我试过的代码是:
elxpath = "//span[contains(text(),'Element 20')]"
while True:
time.sleep(5)
if (driver.find_element_by_xpath(elxpath)):
driver.find_element_by_xpath(elxpath).click()
break
else:
driver.find_element_by_xpath("xpath to goto next page").click()
break
但此代码适用于第一页中的元素。如果条件为假,则不会点击下一页。
我得到的错误:
消息:没有这样的 element:Unable 来定位元素:{"method":"xpath","selector":"//span[contains(text(),'Element 20')]" }
还有其他方法吗?
谢谢
find_element_by_
将 return 元素或将抛出 NoSuchElementException
如果找不到元素,if
将在这里不起作用。
使用find_elements_by_
获取元素列表并检查它是否不为空
elements = driver.find_elements_by_xpath(elxpath)
if elements:
elements[0].click()
最好使用 try
和 except
from selenium.common.exceptions import NoSuchElementException
elxpath = "//span[contains(text(),'Element 20')]"
while True:
time.sleep(5)
try:
driver.find_element_by_xpath(elxpath).click()
break
except NoSuchElementException:
driver.find_element_by_xpath("xpath to goto next page").click()
break
你可以这样做
elxpath = "//span[contains(text(),'Element 20')]"
while True:
time.sleep(5)
try:
driver.find_element_by_xpath(elxpath).click()
break
except Exception:
driver.find_element_by_xpath("xpath to goto next page").click()
您好,我有以下第 1 页元素的代码。
<span _ngcontent-iyc=""class="ng-star-inserted">ELEMENT 1</span>
<span _ngcontent-iyc=""class="ng-star-inserted">ELEMENT 2</span>
<span _ngcontent-iyc=""class="ng-star-inserted">ELEMENT 3</span>
<span _ngcontent-iyc=""class="ng-star-inserted">ELEMENT 4</span>
同样,我还有 4 个包含不同元素的页面。
我需要的是使用 selenium python 找到一个元素,如果该元素存在于该页面中,则单击它。否则点击下一页,在那里搜索元素,直到找到元素。
我试过的代码是:
elxpath = "//span[contains(text(),'Element 20')]"
while True:
time.sleep(5)
if (driver.find_element_by_xpath(elxpath)):
driver.find_element_by_xpath(elxpath).click()
break
else:
driver.find_element_by_xpath("xpath to goto next page").click()
break
但此代码适用于第一页中的元素。如果条件为假,则不会点击下一页。
我得到的错误: 消息:没有这样的 element:Unable 来定位元素:{"method":"xpath","selector":"//span[contains(text(),'Element 20')]" }
还有其他方法吗? 谢谢
find_element_by_
将 return 元素或将抛出 NoSuchElementException
如果找不到元素,if
将在这里不起作用。
使用find_elements_by_
获取元素列表并检查它是否不为空
elements = driver.find_elements_by_xpath(elxpath)
if elements:
elements[0].click()
最好使用 try
和 except
from selenium.common.exceptions import NoSuchElementException
elxpath = "//span[contains(text(),'Element 20')]"
while True:
time.sleep(5)
try:
driver.find_element_by_xpath(elxpath).click()
break
except NoSuchElementException:
driver.find_element_by_xpath("xpath to goto next page").click()
break
你可以这样做
elxpath = "//span[contains(text(),'Element 20')]"
while True:
time.sleep(5)
try:
driver.find_element_by_xpath(elxpath).click()
break
except Exception:
driver.find_element_by_xpath("xpath to goto next page").click()