Selenium/Python功能测试:根据link文本查找兄弟元素

Selenium/Python functional test: find sibling element according to link text

我正在 运行 使用 Selenium 和 Python 进行功能测试。在测试中,我最终想用 hash-tag class 检查 p 标签的文本。此 p 标签的内容取决于 a 标签的文本,它是 h3 的子元素,h3p 标签的兄弟元素,带有 hash-tag class.

例如(参见下面的标记)如果 a 标签的文本是 'Paramount’s Pop Culture Staying Power' 那么我想:

到目前为止,我只能通过文本获取 a 标签,但我不确定如何使用 hash-tag class 遍历到 p 标签:

def setUpClass(cls):
    cls.browser = webdriver.Chrome()

def test_DB_tags(self):
    paramount_link = self.browser.find_element_by_link_text('Paramount’s Pop Culture Staying Power')

link_text 用于锚标记,即 HTML 中的 a 标记。

  1. h3 那个 a 标签的父级

    //a[text()='your string']/..

/..表示从当前节点转到父标签。

  1. 获取 h3 标签的第一个同级标签,即带有 hash-tag class

    p 标签

    //a[text()='your string']/../following-sibling::p[@class='lead db-explanation']

  2. 检查 p 标签的文本是否为 '#IMDB'

//a[text()='your string']/../following-sibling::p[text()='#IMDb']

  1. 使用 a hash-tag class
  2. 获取下一个 p 标签

这个和2nd Point一样,5th也可以写。试试自己写,让我知道我可以验证。

阅读有关 xpath 轴的更多信息here

如果我明白你要找的是什么,你可以这样做:

  1. a 标签元素获取它的文本。
sentence = driver.find_element_by_xpath('//a[@href]').text
  1. 从句子中获取第一个单词
first_word = sentence.split(' ', 1)[0]

现在,要使用 p 标记和 hash-tag class 找到您要查找的第一个元素并获取它的文本,可以按以下方式完成:

first_p_text = driver.find_element_by_xpath('(//a[@href]/../..//p[@class="hash-tag"])[1]').text

第二个 p 文本将是

second_p_text = driver.find_element_by_xpath('(//a[@href]/../..//p[@class="hash-tag"])[2]').text

现在断言:

self.assertTrue(first_p_text in first_word)
self.assertTrue(second_p_text in "#IMDB")