是否可以缩短此 Xpath?
Is it possible to make this Xpath shorter?
我们为 Chrome、Firefox 和 Safari 开发扩展,并使用 Selenium 测试我们的 Chrome 和 Firefox 扩展。我们有一个特定的元素,它可以是 span 或 div(取决于我们的扩展版本),我们需要用 Selenium 验证它。代码如下所示:
WebDriverWait(driver=self.driver, timeout=30).until(expected_conditions.visibility_of_element_located((By.XPATH, "//span[@id='top-icon'] | //div[@id='top-icon']")))
self.assertEqual(first=1, second=len(self.driver.find_elements_by_xpath(xpath="//span[@id='top-icon'] | //div[@id='top-icon']")))
我想知道是否有办法缩短 xpath(不用写两次 id),但不要试图找到任何元素(仅 span 或 div)。
要创建与元素无关的表达式,请使用 *
代替 div
或 span
:
//*[@id='top-icon']
或者,只需使用 By.ID
定位器:
(By.ID, "top-icon")
你可以使用
//*[self::span|self::div][@id='top-icon']
我们为 Chrome、Firefox 和 Safari 开发扩展,并使用 Selenium 测试我们的 Chrome 和 Firefox 扩展。我们有一个特定的元素,它可以是 span 或 div(取决于我们的扩展版本),我们需要用 Selenium 验证它。代码如下所示:
WebDriverWait(driver=self.driver, timeout=30).until(expected_conditions.visibility_of_element_located((By.XPATH, "//span[@id='top-icon'] | //div[@id='top-icon']")))
self.assertEqual(first=1, second=len(self.driver.find_elements_by_xpath(xpath="//span[@id='top-icon'] | //div[@id='top-icon']")))
我想知道是否有办法缩短 xpath(不用写两次 id),但不要试图找到任何元素(仅 span 或 div)。
要创建与元素无关的表达式,请使用 *
代替 div
或 span
:
//*[@id='top-icon']
或者,只需使用 By.ID
定位器:
(By.ID, "top-icon")
你可以使用
//*[self::span|self::div][@id='top-icon']