如何為以下突出顯示的元素派生 xpath?因為我看到所有類名都是相同的。我也嘗試過使用父子遍歷,但它不起作用,因為所有 4 個子元素都具有相同的屬性。我不能使用“Samsung - S10”文本,因為它是一個變數,并且會針對各個設備而改變。

uj5u.com熱心網友回復:
作為最后的手段,我總是使用 xpath 索引。我知道這不是最佳做法,但它總是對我有用。
你可以試試:
(//dd[@class='m-0 text-base'])[1]
應該代表第一個節點,您可以更改為[2],[3]以分別定位第二個和第三個節點。
此外,不確定您是否可以在 xpath 中使用 Device Protected,如果可以,那么我們必須使用它,我們可以消除 xpath 索引。
uj5u.com熱心網友回復:
我認為,對于您突出顯示的文本,您可以使用以下內容xpath:
//div[@class='mb-3' and contains(@style, 'display: grid;')]//dl//dt[contains(text(), 'DEVICE PROTECTED')]/following-sibling::dd
從那里,您可以將其插入xpath驅動程式,然后將元素放入串列中
my_xpath = "//div[@class='mb-3' and contains(@style, 'display: grid;')]//dl//dt[contains(text(), 'DEVICE PROTECTED')]/following-sibling::dd"
myElements = driver.find_elements(By.XPATH, my_xpath)
一旦你得到你的元素串列,你就可以得到text每個元素的元素,然后做任何你想做的事情
my_xpath = "//div[@class='mb-3' and contains(@style, 'display: grid;')]//dl//dt[contains(text(), 'DEVICE PROTECTED')]/following-sibling::dd"
my_list_length = driver.find_elements(By.XPATH, my_xpath).__len__()
for rec_num in range(my_list_length):
newXPath = "{0}[{1}]".format(my_xpath, f'{rec_num 1}')
ourElement = driver.find_element(By.XPATH, newXPath)
print(f'new element text: {ourElement.text}')
如果只有 1 條記錄顯示并且您只需要設備名稱,那么您也可以這樣做:
my_xpath = "//div[@class='mb-3' and contains(@style, 'display: grid;')]//dl//dt[contains(text(), 'DEVICE PROTECTED')]/following-sibling::dd"
myText = driver.find_element(By.XPATH, my_xpath).text
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/415249.html
標籤:
