快速提问。你知道吗
我有这个密码:
albums_links = self.browser.\
find_elements_by_link_text('Albums')
# albums_links = self.browser.find_elements_by_xpath(
# '//a[contains(@href, "albums")]') # this works (enough), I leave here for reference
self.assertEqual(albums_links[0].get_attribute('href'),
self.live_server_url + '/admin/albums/')
self.assertEqual(albums_links[1].get_attribute('href'),
self.live_server_url + '/admin/albums/album/')
它起作用了。现在我已经重新安装操作系统,重做的venv等和代码是不工作了。理论上唯一不同的是python版本和django版本,但我不确定,因为变化很大。你知道吗
所以,我问代码应该同时找到这两个链接还是只找到一个:
<caption>
<a href="/admin/albums/" class="section" title="Models in the Albums application">Albums</a>
</caption>
<tr class="model-album">
<th scope="row"><a href="/admin/albums/album/">Albums</a></th>
以前(Python3.4 django 1.8)找到了这两个,现在(Python3.7.4,django 2.0)只找到了第二个。
这种行为是一致的,对于某些“框架”中的其他链接也是一样的,比如Albums
或Solos
,然后是Add Track
(是标准的django管理)
我会看到在selenium中comand find_element_by_link_text
是不可靠的,但是这是一个特性吗?你知道吗
谢谢
编辑:换句话说,元素中的类和标题可能是个问题?你知道吗
Html
对于“添加曲目”:
<li>
<a href="/admin/albums/track/add/" class="addlink">
Add track
</a>
</li>
Edit2:django版本也不同。也许html里有什么变化?你知道吗
与其使用find\ element\ by\ link\ text,不如改用XPath。你知道吗
driver.findElement(By.XPath("//a[contains(text(), 'Add track')]"));
这比按链接文本查找元素要简单,而且如果链接更改,它不会中断,因为我们只查看标记内的纯文本。你知道吗
希望这有帮助。你知道吗
相关问题 更多 >
编程相关推荐