首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Selenium从python对象列表中单击特定的按钮对象。

Selenium从python对象列表中单击特定的按钮对象。
EN

Stack Overflow用户
提问于 2022-11-26 23:38:40
回答 1查看 27关注 0票数 -1

我抓取一个按钮列表,然后我尝试点击一个特定的按钮对象,我收集所有按钮(其中包含详细信息,如名称)。我检查名称,如果我已经单击此按钮,传递,否则单击此按钮对象。

我遇到的问题是该按钮没有ID,因此我不确定如何动态识别按钮以单击它(从循环中的对象)。它也没有HREF。

如果它有一个ID,我可以获取ID值并构建一个selenium单击,甚至像browser.find_element(By.ID, "button-ID").click()

如有任何指示,将不胜感激。

代码语言:javascript
复制
html = browser.page_source
soup = BeautifulSoup(html, "lxml")
buttons = soup.find_all('button', {'class', 'full-width'})
for button in buttons:
    button_soup = BeautifulSoup(str(button), 'lxml')
    name_div = button_soup.find('div', {'class': 'artdeco-entity-lockup__title'})
    name = name_div.find('span', {'aria-hidden': 'true'}).text
    if name in lead_check:
        pass
    else:
        """HERE IS WHERE I NEED TO CLICK THE BUTTON OBJECT"""
        browser.find_element(By.CSS_SELECTOR, "button.full-width").click()    

对象(循环中的一个按钮)示例

代码语言:javascript
复制
<button class="full-width member-analytics-addon__cta-list-item-content member-analytics-addon-entity-list__link member-analytics-addon-entity-list__link--no-underline-hover" role="button" type="button">
<div class="member-analytics-addon-entity-list__entity artdeco-entity-lockup artdeco-entity-lockup--size-3 ember-view" id="112">
<div class="artdeco-entity-lockup__image artdeco-entity-lockup__image--type-circle ember-view" id="113" type="circle">
<div class="ivm-image-view-model">
<div class="ivm-view-attr__img-wrapper ivm-view-attr__img-wrapper--use-img-tag display-flex">
<!-- --> <img alt="" class="ivm-view-attr__img--centered EntityPhoto-circle-3 EntityPhoto-circle-3 lazy-image ember-view" height="48" id="114" loading="lazy" src="linktopic" width="48"/>
</div>
</div>
<!-- -->
</div>
<div class="artdeco-entity-lockup__content ember-view member-analytics-addon-entity-list__entity-content" id="115">
<div>
<div class="artdeco-entity-lockup__title ember-view member-analytics-addon-entity-list__entity-content-title" id="116">
<span dir="ltr"><span aria-hidden="true"><!-- -->John Smith<!-- --></span><span class="visually-hidden"><!-- -->View Johns’s profile<!-- --></span></span>
</div>
<div class="artdeco-entity-lockup__badge ember-view t-normal" id="117"><!-- --> <span aria-hidden="false" class="artdeco-entity-lockup__degree">
    · 3rd
  </span>
<!-- --><!-- --></div>
<div class="artdeco-entity-lockup__subtitle ember-view" id="118">
<!-- -->Loves cats<!-- -->
</div>
<!-- --> </div>
<!-- --> </div>
</div>
</button>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-27 20:01:44

我通过在每个按钮中标识一个唯一变量来解决这个问题,在这个例子中,一个IMG然后用selenium动态地定位每一个。

代码语言:javascript
复制
img_src = button_soup.find('img')['src']
path_location = "//img[contains(@src,'{}')]".format(img_src)
browser.find_element(By.XPATH, path_location).click()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74586418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档