Python Selenium-如何单击表中一组元素中的倒数第二个元素?

时间:2018-11-15 11:43:20

标签: python selenium selenium-webdriver xpath webdriver

大家好, 有人可以向我解释我如何无法获取表中的元素数量吗?我正在遍历多个表,这些表都有不同的长度,并且我总是需要最后三项。我有包含那些表的xpath。

Using Selenium's Python API - How do I get the number of rows in a table?

我找到了这个答案以及其他一些似乎可以回答我问题的答案,但是老实说:在这一点上,我只是不了解如何在我的代码中实现它。

我正在使用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]

1 个答案:

答案 0 :(得分:2)

要查找以 ContentPlaceHolder1_gridview1_refid _ 开始的 id 倒数第三行元素,可以使用以下 xpath

browser.find_element_by_xpath("//*[@id='ContentPlaceHolder1_gridview1']/tbody/tr[last()-3]").click()