python - Python Selenium - 如何单击表格中一组元素中的倒数第三个元素?
问题描述
大家好,有人可以向我解释我如何无法获得表格中的元素数量吗?我正在浏览多个长度不同的表格,并且我总是需要第三个最后一个项目。我有包含这些的表的 xpath。
使用 Selenium 的 Python API - 如何获取表中的行数?
我找到了这个答案和其他一些似乎回答了我的问题的答案,但老实说:此时我只是不明白如何在我的代码中实现它。
我正在使用 Python 3.6 和 Selenium。如果有人可以帮助我,那就太好了,因为这个小脚本每天可以为我节省 1-2 个小时的繁琐工作。
编辑:
首先我登录到我的页面,在那里我可以搜索 CustomerID,我使用以下代码:
Customer_IDs = ['100001','100002','100003']
for ID in Customer_IDs:
customer = browser.find_element_by_id('ContentPlaceHolder1_txtcustomercode')
customer.send_keys(ID)
customer.send_keys(Keys.TAB)
browser.find_element_by_id("ContentPlaceHolder1_btnsearch").click()
#here I want go through the table to find the amount of rows
browser.find_element_by_id("ContentPlaceHolder1_gridview1_refid_1").click()
browser.find_element_by_id('ContentPlaceHolder1_txtcustomercode').clear()
这个“ContentPlaceHolder1_gridview1_refid_1”基本上是我需要改变的。如果有 10 行,我将需要“ContentPlaceHolder1_gridview1_refid_7”等等。
更新 A(来自评论)
我有存储文件的表的 xpath。当我想要该表的第一个元素(“ContentPlaceHolder1_gridview1_refid_1”)时,我编写的代码可以正常工作。但我需要倒数第三个元素。
更新 B(来自评论)
表的 xpath 是:
//*[@id="ContentPlaceHolder1_gridview1"]
更新 C(来自评论)
行的 xpath 是:
//*[@id="ContentPlaceHolder1_gridview1"]/tbody/tr[1]
//*[@id="ContentPlaceHolder1_gridview1"]/tbody/tr[2]
解决方案
要定位id以ContentPlaceHolder1_gridview1_refid_开头的倒数第三行元素,您可以使用以下xpath:
browser.find_element_by_xpath("//*[@id='ContentPlaceHolder1_gridview1']/tbody/tr[last()-3]").click()
推荐阅读
- angular - 使用 catchError 更新组件
- ruby - 为什么 ruby-mcrypt 不接受数组作为密钥?
- testing - Ecllipes 在连接到数据库时给出 Java 代码问题
- prolog - 列表 Prolog 列表的第一个元素
- postgresql - Microsoft Azure PostgreSQL 事件触发器与超级用户
- php - json 响应中收到的额外字符
- java - 在加法之前将 double 转换为 BigDecimal 是否足以保持原始精度?
- php - 如何覆盖重定向的响应正文?
- python - 关于 Keras 中的默认权重初始化器有什么解释吗?
- php - 如何通过在 PHP 中删除表来修复 SQL 错误?