【问题标题】:How to give values to all the td in table using python selenium如何使用 python selenium 为表中的所有 td 赋值
【发布时间】:2019-12-24 23:57:36
【问题描述】:

我正在尝试为 td 标签内的所有输入框赋值。但我的代码只为第一个 td 赋值。这里 id 是通过代码动态创建的。

<tbody id="gridview-1161-body">
 <tr id="gridview-1161-record-19832230" data-boundview="gridview-1161" data-recordid="19832230" data-recordindex="2" class="x-grid-row x-grid-data-row" tabindex="-1">

#supplier item
<td role="gridcell" class="x-grid-cell x-grid-td x-grid-cell-headerId-gridcolumn-1154" id="ext-gen2524">
<div class="x-grid-cell-inner " style="text-align:left;">
<div class="rp-invalid-cell rp-icon-alert-require-field"></div>xxx/div></td>
#id
<td role="gridcell" class="x-grid-cell x-grid-td x-grid-cell-headerId-gridcolumn-1156" id="ext-gen2526">
<div class="x-grid-cell-inner " style="text-align:left;">
<div class="rp-invalid-cell rp-icon-alert-require-field"></div>yy</div></td>
#cost
<td role="gridcell" class="x-grid-cell x-grid-td x-grid-cell-headerId-gridcolumn-1157" id="ext-gen2527">
<div class="x-grid-cell-inner " style="text-align:right;">
<div class="rp-invalid-cell rp-icon-alert-require-field"></div>$15.00</div></td>
#qty to add
<td role="gridcell" class="x-grid-cell x-grid-td x-grid-cell-headerId-gridcolumn-1158  rp-grid-editable-cell  rp-grid-editable-cell" id="ext-gen2535">
<div class="x-grid-cell-inner " style="text-align:right;">
<div class="rp-invalid-cell rp-icon-alert-require-field">
</div>&nbsp;</div></td>

<td role="gridcell" class="x-grid-cell x-grid-td x-grid-cell-headerId-gridcolumn-1158  rp-grid-editable-cell  rp-grid-editable-cell" id="ext-gen2542">
<div class="x-grid-cell-inner " style="text-align:right;">
<div class="rp-invalid-cell rp-icon-alert-require-field" id="ext-gen2768">
</div>&nbsp;</div></td>

<td role="gridcell" class="x-grid-cell x-grid-td x-grid-cell-headerId-gridcolumn-1158  rp-grid-editable-cell  rp-grid-editable-cell" id="ext-gen2556">
<div class="x-grid-cell-inner " style="text-align:right;">
<div class="rp-invalid-cell rp-icon-alert-require-field">
</div>&nbsp;</div></td>

<td role="gridcell" class="x-grid-cell x-grid-td x-grid-cell-headerId-gridcolumn-1158  rp-grid-editable-cell  rp-grid-editable-cell" id="ext-gen2563">
<div class="x-grid-cell-inner " style="text-align:right;">
<div class="rp-invalid-cell rp-icon-alert-require-field">
</div>&nbsp;</div></td>

输入框代码:每个 td 都有以下相同的输入框(相同的 id,类名)

<input id="numberfield-1243-inputEl" type="text" role="spinbutton" name="Quantity" class="x-form-field x-form-text x-form-focus x-field-form-focus x-field-default-form-focus" autocomplete="off" style="width: 100%;"> 

Python 代码:

#add qty
for count in range(items_tot):   
    element = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "td.x-grid-cell.x-grid-td.rp-grid-editable-cell[role='gridcell']")))
    element.click()


    #input box to give qty-working for this id
    driver.find_element(By.ID, "numberfield-1243-inputEl").send_keys('10')
    driver.find_element(By.ID, "numberfield-1243-inputEl").send_keys(Keys.ENTER)

【问题讨论】:

  • 请任何人帮我解决这个问题

标签: python selenium html-table user-input


【解决方案1】:

首先你需要找到所有的输入元素。

通过使用“driver.findElements”函数

然后做这样的动作。

elements = driver.find_elements_by_xpath('//table//tr//td//input') #xpath to find input

for element in elements:
    element.send_keys('10')
    element.send_keys(Keys.ENTER)

【讨论】:

  • 在我的情况下有很多 td,使用你的代码它不起作用
猜你喜欢
  • 1970-01-01
  • 2020-04-06
  • 1970-01-01
  • 2021-07-19
  • 1970-01-01
  • 1970-01-01
  • 2019-03-28
  • 2022-11-28
  • 2019-08-02
相关资源
最近更新 更多