在xpath中按最高编号选择按钮

时间:2017-10-06 11:52:50

标签: python selenium xpath

我的页面上有多个按钮,包含类似的href。它们仅与id_invoices不同。我想使用xpath和href点击页面上的一个按钮,如下所示:

href="/pl/payment/getinvoice/?id_invoices=461"

我可以使用以下方式选择所有按钮:

invoices = driver.find_elements_by_xpath("//a[contains(@href, '/payment/getinvoice/')]")

但我只需要选择id_invoices最高的按钮。可以吗? :)

3 个答案:

答案 0 :(得分:0)

我不太了解python,所以给你一个方向/算法来实现相同的

Using getAttribute('@href'); 

您将获得网址

您需要在发货getText() {。}} List之后拆分所有元素。

Split by =并获取最后一个数组值。

现在你需要将字符串输入到int,因为=之后的最后一个值将是一个数字

现在你只需选择最高价值。

答案 1 :(得分:0)

你能做的是:

hrefList = driver.find_elements_by_xpath("//a[contains(@href, '/payment/getinvoice/')]/@href")

for i in hrefList:
    hrefList[i]=hrefList[i].split("id_invoices=")[-1]

max = max(hrefList)

driver.find_elements_by_xpath("//a[contains(@href, '/payment/getinvoice/?id_invoices="+str(max))+"'"+"]").click()

答案 2 :(得分:0)

由于您有一个返回所有所需元素的XPath,您只需要从每个元素中获取href属性,将href分解为' ='获取id(字符串的第2部分),找到最大的id,然后使用id找到你想要的元素并点击它。

invoices = driver.find_elements_by_xpath("//a[contains(@href, '/payment/getinvoice/')]")
ids = []
for invoice in invoices
    ids.append(invoice.get_attribute("href").split('=')[2])
results = list(map(int, ids)) // you can't do max on a list of string, you won't get the right answer
id = max(results)
driver.find_element_by_xpath("//a[@href='/pl/payment/getinvoice/?id_invoices=" + id + "']").click