65520


Python3でSeleniumを使ってChromeを自動操作しています。  
ページを読み込む度にxpathが変化するので、for文で回してテキストが一致するものを取得しています。

例えばxpathが

[code]

    //*[@id="aa"]/div/div[4]/div[3]/div/div[100]/div[4]/div/span
    
[/code]

のものを、テキストの一致で取得できた場合、

[code]

    //*[@id="aa"]/div/div[4]/div[3]/div/div[100]/div[4]/div[3]/div[2]/span
    
[/code]

という

[code]

    //*[@id="aa"]/div/div[4]/div[3]/div/div[100]/div[4]
    
[/code]

の部分まで同じ要素を取得することは可能でしょうか？

ちなみに毎回変化するのは div[100] の部分で、それ以外は両要素ともxpathは変化しません。

[code]

    elm2 = driver.find_elements_by_xpath('//*[@id="aa"]/div/div[4]/div[3]/div/div[*]/div[4]/div/span')
    
    for x in elm2:
        if x.text == "猫":
            print(x.text)
    
[/code]

よろしくお願いいたします。


CC BY-SA 4.0
2020-04-10T06:49:42.233
65512
2020-04-10T11:25:30.947
2020-04-10T11:25:30.947
3060
9807
question
python xpath
途中まで同じノード配下の要素を XPath で取得したい


以下のようにやってみてください。

[code]

    elm2 = driver.find_elements_by_xpath('//*[@id="aa"]/div/div[4]/div[3]/div/div[*]/div[4]/div/span')
    
    for x in elm2:
        if x.text == "猫":
            print(x.text)
            elm3 = x.find_elements_by_xpath('../../div[3]/div[2]/span')
                ...
    
[/code]


CC BY-SA 4.0
2020-04-10T11:08:49.087
65520
2020-04-10T11:08:49.087
13227
65512
answer