提问人:nickcoding2 提问时间:10/18/2023 更新时间:10/19/2023 访问量:44
基于子元素嵌套找到正确的 Selenium Web 元素
Finding correct Selenium web element based on child element nesting
问:
所以我有两个按钮需要点击,但有时其中一个不会在那里。称它们为按钮“1”和“2”。有时,如果按钮 2 不在页面上,则按钮 1 具有按钮 2 的路径。按钮 1 和 2 具有不同的子元素。按钮 1 有一个标签,包装
标记,而按钮 2 只有一个标签作为子元素。因此,我需要一种基于子元素确定哪个是哪个的方法,因为类和其他 css 元素是相同的。
我读过关于硒轴的文章,但不明白它们在这种情况下是如何工作的。
Button 1 XPath: "//*[@id='main-content']/section[3]/div[2]/button" // has child element <span><p>content here<\p><\span>
Button 2 XPath: "//*[@id='main-content']/section[4]/div[2]/button" // has child element <span>content here<\span>
答:
1赞
Mahboob Nur
10/18/2023
#1
有一种方法可以通过使用 Selenium 的按钮中的子元素来区分“按钮 1”和“按钮 2”,方法是查看子元素及其属性。
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("your_website_url_here")
try:
button1 = driver.find_element_by_xpath("//*[@id='main-content']/section[3]/div[2]/button")
if button1.find_elements_by_xpath(".//span/p"):
print("Button 1 clicked")
button1.click()
else:
button2 = driver.find_element_by_xpath("//*[@id='main-content']/section[4]/div[2]/button")
print("Button 2 clicked")
button2.click()
except NoSuchElementException as e:
# Handle the exception if the element is not found
print("Element not found. Exception message:", e)
driver.quit()
评论
0赞
SHUBHAM SHEDGE
10/18/2023
您提供的代码可能有效,但您的异常处理存在一个小问题。应指定要捕获的特定异常,在本例中为 NoSuchElementException。
0赞
Mahboob Nur
10/18/2023
@SHUBHAMSHEDGE肯定有办法。我已经为您修改了代码。
评论