問題: 我正在使用Selenium將資料輸入到這個網站的輸入欄位。 其中一個表有一個問題,因為它沒有這些欄位的唯一ID。 我想在 "project2 "下的輸入欄位中輸入文字,輸入 "name2"。所有的專案在他們的專案中都有相同的名字。這些名字可能會改變,而且他們可能會在未來添加一些新的欄位。
問題:
有沒有可能做一個XPATH查詢,讓我在專案2之后但同時在專案3之前做一些事情?
例如,像這樣的例子。//something/preceding-sibling::tr and //something_else/following-sibling::tr
提前感謝。
示例代碼:
<table border="0"/span>>
<tr><td>project1<td> <td> < /td></tr>>
<tr>/span><td> name1</td><td> <input type="text"/span>> </td></tr>
<tr>/span><td> name2</td><td> <input type="text"/span>> </td></tr>
<tr><td> name3</td><td> <input type="text"/span>> </td></tr>
<tr><td> name4</td><td> <input type="text"/span>> </td></tr>
<tr><td>project2<td> <td> < /td></tr>>
<tr>/span><td> name1</td><td> <input type="text"/span>> </td></tr>
<tr>/span><td> name2</td><td> <input type="text"/span>> </td></tr>
<tr><td> name3</td><td> <input type="text"/span>> </td></tr>
<tr><td> name4</td><td> <input type="text"/span>> </td></tr>
<tr><td>project3<td> <td>< /td></tr>>
<tr>/span><td> name1</td><td> <input type="text"/span>> </td></tr>
<tr>/span><td> name2</td><td> <input type="text"/span>> </td></tr>
<tr><td> name3</td><td> <input type="text"/span>> </td></tr>
<tr><td> name4</td><td> <input type="text"/span>> </td></tr>
</table>
螢屏截圖:
uj5u.com熱心網友回復:
你可以試試下面的xpath :
//td[text()='project2']/./following-sibling::tr[2]/descendant::input
Update :
如果td[2]是問題所在,那么可能使用這個 :
//td[text()='project2']/.../following-sibling::*/td[text()='name2']/following-sibling: : td/input
或者甚至下面這個 :
(//*[text()='project2']/.../following-sibling::*/*[text()='name2'] ) [1]/following-sibling::td/input
uj5u.com熱心網友回復:
這將給你帶來你想要的東西:
//tr[preceding-sibling::tr[td[.="project2"]]][not(preceding-sibling::tr[td[.="project3"])][td[.="name2"]]/td/input
上面將找到所有的<tr>元素:
- 出現在一個包含有文本 "project2 "的
<tr>元素之后 ->[ preceding-sibling::tr[td[.="project2"]] - 在一個包含有文本 "project3 "的
<tr>元素之前 ->[not( preceding-sibling::tr[td[.="project3"])] - 有一個
<td>元素,其文本為 "name2" ->[td[.="name2"]]
然后它將向下鉆取該行的<input>元素內的<td>元素。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/320430.html
標籤:
上一篇:附加物件而不是html

