<p>根据您共享的html,每个tr有三个元素:文本框、selectbox和按钮。你知道吗</p>
<p>在保存的记录的屏幕截图中,我没有看到输入字段。例如,文本user1。我假设user1在一个span标记中。
就像</p>
<pre class="lang-html prettyprint-override"><code><td>
<div>user1</div>
</td>
</code></pre>
<p>必须以不同的方式处理每个元素,才能从中获得值。你知道吗</p>
<ul>
<li>要在div中获取innerText,我们必须使用<code>elem.text</code></li>
<li>获取属性
输入文本框的值,我们必须使用<code>elem.get_attribute('value')</code></li>
<li>要获得选定的值,我们必须使用<code>Select(elem).first_selected_option</code></li>
</ul>
<p>这是一个示例代码,用于获取dom的数据。请根据您的需要自由编辑。
我使用css选择器来查找元素。在<a href="https://www.w3schools.com/cssref/css_selectors.asp" rel="nofollow noreferrer">here</a>中查找语法。你知道吗</p>
<pre class="lang-py prettyprint-override"><code># This returns all the tr elements in the table
rows = driver.find_elements_by_css_selector("table#sec_user_table>tbody>tr")
for i in range(1, len(rows)):
# This returns only the span, input which is not password and select elements
cols = rows[i].find_elements_by_xpath("td//*[self::div[not(.//input)] or self::input[@type='text'] or self::select]")
for col in cols:
if col.tag_name == 'SELECT':
print(Select(col).first_selected_option.text) # To get the select value
elif col.tag_name == 'INPUT':
print(col.get_attribute('value')) # To get the input value
else:
print(col.text) # To get text fron span
</code></pre>
<p>或者</p>
<p><strong>带有单个选择器的简单解决方案:</strong></p>
<p>这是特定于您的情况,因为您不需要完全输入元素</p>
<pre><code> # This returns all the tr elements in the table
rows = driver.find_elements_by_css_selector("table#sec_user_table>tbody>tr")
for i in range(1, len(rows)):
username = rows[i].find_element_by_xpath("//div[not(.//input)]")
print(username.text)
select = rows[i].find_elements_by_css_selector("select")
for col in cols:
print(Select(col).first_selected_option.text) # To get the select value
</code></pre>