Python -通过跳过一个子元素进行Xpath selenium链接

vaj7vani  于 2023-05-17  发布在  Python
关注(0)|答案(1)|浏览(93)

基本上,我试图在链接到通用xpath时缩短xpath,但不幸的是,我只得到第一个产品的文本,而不是多个产品标题。
我从页面中获取所有产品,使用:

products = driver.find_elements(By.XPATH, '//div[@class="card h-100"]')

如下图所示,我使用//h4/a来识别标题:Browser Xpath results
在我为每个产品编写的自动化脚本中,我通过跳过一个父元素并获取文本来链接'//h4/a',但不幸的是,我只获得了第一个元素,如下图所示:Automation by shortening xpath

for product in products:
    card_text = product.find_element(By.XPATH, '//h4/a').text
    if card_text == 'Blackberry':
        card.find_element(By.XPATH, 'div/button').click()
        break

但是使用所有父/子遍历xpath div/h4/a,它可以正常工作,我得到的结果和预期的一样,如下图所示。Automation script with long parent child xpath
我想知道如何在链接过程中缩短xpath。

yhived7q

yhived7q1#

首先在代码中调用card.find_element,但是我们看不到这个参数。
我想你是这个意思:

for product in products:
    card = product.find_element(By.XPATH, '//h4/a')
    if card.text == 'Blackberry':
        card.find_element(By.XPATH, 'div/button').click()
        break

最好的链接方式是这样的,只需在元素xpaths之间放置一个空格:
'element1 element2..'
因此,您可以将xpath更改为:

card = product.find_element(By.XPATH, '//h4/a div/button')

或者为了检查一行中的文本:

card = product.find_element(By.XPATH,
 '//h4/a div/button[contains(text(),"Blackberry")]')

相关问题