使用 selenium Python 找到正确的 xpath

Find correct xpath with selenium Python

我目前正在使用 Selenium 和 webdriver 开发一个项目。到目前为止一切顺利,我可以毫无问题地使用 selenium 浏览网站,但是,我需要单击特定图标才能滑到日期和时间 table。问题是在查看 HTML 时,我不知道要用 Selenium 定位什么才能单击该图标。

HTML样本:

<a _ngcontent-oyt-c155="" class="btn btn-soft-primary day-selector-navbutton"><i _ngcontent-oyt-c155="" class="fa fa-chevron-right"></i></a>

通常我通过名称、ID 或 Class 来定位项目,但在那种情况下我不知道从哪里得到。

我应该寻找 xpath 吗?

根据您在此处分享的内容,此 XPath 应该有效:

'//a[@class="btn btn-soft-primary day-selector-navbutton"]//i[@class="fa fa-chevron-right"]'

我不能完全确定这个定位器是唯一的还是那里没有 iframe 等等
您可能还需要在此处添加某种等待。如果是这样,您最好使用预期条件显式等待。

所需的元素是 Angular element, so to on the clickable element you need to induce WebDriverWait for the and you can use either of the following :

  • 使用CSS_SELECTOR:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "a.btn.btn-soft-primary.day-selector-navbutton > i.fa.fa-chevron-right"))).click()
    
  • 使用 XPATH:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[@class='btn btn-soft-primary day-selector-navbutton']/i[@class='fa fa-chevron-right']"))).click()
    
  • 注意:您必须添加以下导入:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC