基于子元素嵌套找到正确的 Selenium Web 元素

Finding correct Selenium web element based on child element nesting

提问人:nickcoding2 提问时间:10/18/2023 更新时间:10/19/2023 访问量:44

问:

所以我有两个按钮需要点击,但有时其中一个不会在那里。称它们为按钮“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>
python html selenium-webdriver xpath

评论


答:

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肯定有办法。我已经为您修改了代码。