Selenium/Python功能测试:根据链接文本查找同级元素
我正在使用Selenium和Python运行功能测试。在测试中,我最终希望用Selenium/Python功能测试:根据链接文本查找同级元素,python,selenium,css-selectors,Python,Selenium,Css Selectors,我正在使用Selenium和Python运行功能测试。在测试中,我最终希望用散列标记检查p标记的文本。此p标记的内容取决于a标记的文本,该文本是h3的子元素,该元素是p标记与哈希标记类的同级元素 例如,如果a标签的文本是“派拉蒙的流行文化持久力”,那么我想: 获取该a标记的h3父项 获取h3标记的第一个同级,该标记是带有散列标记的p标记 检查p标记的文本是否为“#IMDB” 使用散列标记类获取下一个p标记 检查p标签的文本是否为“#派拉蒙” 到目前为止,我只能通过文本抓取a标记,但我不确定
散列标记检查p
标记的文本。此p
标记的内容取决于a
标记的文本,该文本是h3
的子元素,该元素是p
标记与哈希标记
类的同级元素
例如,如果a
标签的文本是“派拉蒙的流行文化持久力”,那么我想:
- 获取该
a
标记的h3
父项
- 获取
h3
标记的第一个同级,该标记是带有散列标记的p
标记
- 检查
p
标记的文本是否为“#IMDB”
- 使用
散列标记
类获取下一个p
标记
- 检查
p
标签的文本是否为“#派拉蒙”
到目前为止,我只能通过文本抓取a
标记,但我不确定如何遍历到具有哈希标记的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\u text
用于锚定标记,锚定标记是HTML中的a
标记
h3
该a
标记的父项
//a[text()='your string']/..
/…
表示从当前节点转到父标记
获取h3
标记的第一个同级,该标记是具有哈希标记类的p
标记
//a[text()='your string']/../following sibling::p[@class='lead db explainion']
检查p
标记的文本是否为“#IMDB”
//a[text()='your string']/../following sibling::p[text()='#IMDb']
使用a
哈希标记类获取下一个p
标记
这和第二点一样,你也可以写第五点。试着自己写,让我知道我可以验证它
阅读有关xpath轴的更多信息如果我了解您想要了解的内容,请执行以下操作:
first_p_text = driver.find_element_by_xpath('(//a[@href]/../..//p[@class="hash-tag"])[1]').text
从a
标记元素获取其文本
从句子中找出第一个单词
现在,要使用p
tag和hash-tag
类定位您要查找的第一个元素并获取其文本,可以按以下步骤进行:
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")
将此html代码粘贴到问题中。人们应该如何测试它?
self.assertTrue(first_p_text in first_word)
self.assertTrue(second_p_text in "#IMDB")