因此,我目前正在尝试在生成的div列表中查找所有src链接。问题是它与页面上的其他元素共享相同的类名和alt标记,因此我只能使用xpath。但是,当我尝试使用它时,我仅限于返回在xpath中索引的值。例如div [3]。我如何才能找到所有元素div [1-inf]而不仅仅是一个特定的元素?我发现position()作为参数,但运气并不好。也许我只是使用不正确。 driver.find_elements_by_xpath("//*[@id='tab-history-flow']/div[3]/a/img").get_attribute('src')
<div style="display:inline-block">
<a target="_blank" title="Inventory Profile" href="http://csgo.exchange/profiles/76561197969720703">
<img class="Avatar" alt="avatar" title="ArieBier | 2015-09-16 18:20:58" style="width:32px;height:32px" src="https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/df/dfd267c19d759f730e1051ae4657d0100a6b6c0d.jpg">
</a>
</div>
<div style="display:inline-block">
<a target="_blank" title="Inventory Profile" href="http://csgo.exchange/profiles/76561198136313290">
<img class="Avatar" alt="avatar" title="by | 2015-09-17 02:53:25" style="width:32px;height:32px" src="https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/5d/5d4c06db9ba89f8a945108af10075ebd348cd1ae.jpg">
</a>
</div>
<div style="display:inline-block">
<a target="_blank" title="Inventory Profile" href="http://csgo.exchange/profiles/76561198152970370">
<img class="Avatar" alt="avatar" title="Marn | 2015-10-05 14:40:37" style="width:32px;height:32px" src="https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/ae/ae7878915405c9ad622c9d7fc3b52f3b71ed140a.jpg">
</a>
</div>
我已经尝试过的。
driver.find_elements_by_xpath("//*[@id='tab-history-flow']/div/a/img"[position() < 1000]).get_attribute('src')
driver.find_elements_by_xpath("//*[@id='tab-history-flow']/div[position() < 1000]/a/img").get_attribute('src')
答案 0 :(得分:1)
好吧,我看不到任何id小于您指定的id的元素,因此我不知道为什么它不起作用。但是,我认为这很容易实现。我注意到您在问题中粘贴的HTML中的所有img标签都有class="Avatar"
。这是我获取图像来源的方法:
images = driver.get_elements_by_css_selector('#tab-history-flow > div > a > img')
for image in images:
image = image.get_attribute(src)
这应该将images
变成一个包含所有图像源的数组。让我知道这是否有帮助。
免责声明:我没有看到您的整个HTML页面,因此我使用的选择器可能无法正常工作。 现在有,我认为代码应该对您有用。
答案 1 :(得分:1)
要打印所有src
属性,可以使用以下任一Locator Strategies:
使用CSS_SELECTOR
:
print([element.get_attribute('src') for element in WebDriverWait(driver, 10).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "#tab-history-flow a[title='Inventory Profile']>img.Avatar[alt='avatar']")))])
使用XPATH
:
print([element.get_attribute('src') for element in WebDriverWait(driver, 10).until(EC.visibility_of_all_elements_located((By.XPATH, "//*[@id='tab-history-flow']//a[@title='Inventory Profile']/img[@class='Avatar' and @alt='avatar']")))])
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC