Python 单击每次更改其id的按钮

Python 单击每次更改其id的按钮,python,selenium,beautifulsoup,webdriverwait,mechanicalsoup,Python,Selenium,Beautifulsoup,Webdriverwait,Mechanicalsoup,我使用Python和Selenium。 任务是单击带有文本的按钮'+like'或带有类的列'td'='profile-image'。 但是按钮没有id,它是类“更多喜欢”用于其他按钮。div与class的“配置文件图像按钮”(div的类id用于其他div)的情况相同。 我试图获取'td'的id: button = photos.find('td', class_='profile-image') print(button.get_id) 输出为“无” 以下是网页的html代码: +像 假设

我使用Python和Selenium。 任务是单击带有文本的按钮'+like'或带有类的列'td'='profile-image'。 但是按钮没有id,它是“更多喜欢”用于其他按钮。divclass的“配置文件图像按钮”(div的类id用于其他div)的情况相同。 我试图获取'td'的id:

button = photos.find('td', class_='profile-image')
print(button.get_id)
输出为“无”

以下是网页的html代码:


+像

假设只有一个按钮带有文本“+like”,您可以使用以下特定文本搜索元素:

driver.find_element_by_xpath("//*[contains(text(), '+like')]").click()
所需元素是一个元素,因此要单击该元素,您必须单击该元素才能单击该元素,并且您可以使用以下任一解决方案:

  • 使用
    CSS\u选择器

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "td.profile-image>div.profile-image-button>span.more-likes"))).click()
    
  • 使用
    XPATH

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//td[@class='profile-image']//span[@class='more-likes' and contains(.,'+like')]"))).click()
    
  • 注意:您必须添加以下导入:

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

请提供一个更好的示例,一个真实的示例是不可能的,因此我们可以对其进行测试。我添加了大部分html代码。希望它能帮助我们找到答案!我听说了一些关于机械组的事。这可能是解决办法吗?抱歉,我从未使用过它…不了解mechanicalsoup,您尝试过该解决方案吗?能告诉我身份吗?天哪!它起作用了!非常感谢你!但它只点击了一个按钮,我想我们只识别了一个按钮和这些参数。但该网页至少有3个按钮。如果我需要单击每个按钮,我应该怎么做?(问题是…当我点击按钮时,它会显示更多我需要分析的信息)你必须提出一个新的问题和你的新要求,StackOverflow贡献者会很乐意帮助你。好的。非常感谢。