【问题标题】:checking whether an xpath is present in a certain page检查某个页面中是否存在 xpath
【发布时间】:2020-04-15 18:26:04
【问题描述】:

我有一个所有关注的人(在这种情况下是我)的列表,我正在尝试浏览每个人的页面,看看他们的 BIO 中是否有链接,如果他们有的话,我希望将他们的帐户添加到新名单。否则,我不想对所述用户做任何事情。

使用 xpath 我发现没有链接的用户有这个 xpath /html/body/div[1]/section/main/div/header/section/div[2]/a

并且有链接的用户有这个 xpath /html/body/div[1]/section/main/div/header/section/div[2]/a[1]

如果我运行driver.find_element_by_xpath("/html/body/div[1]/section/main/div/header/section/div[2]/a[1]") 并且用户没有链接,我应该得到一个错误,因为我们无法找到 xpath。

我将如何检查两个 xpath 中的哪一个存在?

【问题讨论】:

标签: python selenium-webdriver


【解决方案1】:

你可以有代码:

Try:
    driver.find_element_by_xpath('/html/body/div[1]/section/main/div/header/section/div[2]/a[1]')
    #The user has a link in their bio
Except:
    #An error has been thrown and the user doesn't have a link in their bio

我目前正在构建一个 Instagram 机器人,并且发现它可以工作并且很有用。

另外,你可以试试:

if len(driver.find_elements_by_xpath('/html/body/div[1]/section/main/div/header/section/div[2]/a[1]')) == 0:
    #There is no link in bio
else:
    #There is a link in the bio

【讨论】:

  • 嘿皮特,是的,这有效!对于追随者中的 i:driver.get(i) 尝试:driver.find_element_by_xpath('/html/body/div[1]/section/main/div/header/section/div[2]/a[1]') 链接.append(i) #用户在他们的简历中有一个链接,除了:pass 这是我用的
  • 这样的方法可以只选择某些链接吗?例如,我只想要该新列表中的 twitter 链接,而不想要任何其他链接。你知道怎么看吗?
  • 您可能想要做的是收集所有链接并然后对链接数组进行排序,检查其中哪些是推特链接。您可以通过检查 if "twitter.com" in link: 来做到这一点(假设所有 twitter 链接都包含“twitter.com”)。
  • Pete,这是正确的,一旦我可以将其放入 csv 中,我就可以使用 pandas 来做到这一点。但我唯一的问题是如何提取链接
【解决方案2】:

试试下面:

from selenium.common.exceptions import NoSuchElementException

try:
    elem = wait.until(EC.element_to_be_clickable((By.XPATH, "/html/body/div[1]/section/main/div/header/section/div[2]/a[1]")))
    elem.click()
except NoSuchElementException:  
    print("Loading took too much time!")

注意:请在您的解决方案中添加以下导入

from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait

【讨论】:

猜你喜欢
  • 2015-07-21
  • 2018-08-22
  • 2011-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-22
  • 2015-09-10
  • 2020-03-21
相关资源
最近更新 更多