2
我有一個html表,我想根據文本以及它是否不包含某個類,在tbody
中找到td
元素。即使文本存在,它也應忽略thead
中的任何內容。如何使用Selenium查找基於文本和類的元素?
...
<div id="mytable">
<div>
<table>
<thead>
<tr>....</tr>
...
</thead>
<tbody>
<tr>
<td class="inactive">3</td>
<td>4</td>
</tr>
</tbody>
</table>
</div>
</div>
...
下面是代碼:
def do_click(user_input):
browser = webdriver.Firefox()
browser.get(url)
mytable_div = browser.find_element_by_id("mytable")
element = mytable_div.find_element_by_xpath("//div/table/tbody/td[contains(text()='%s')]" % user_input)
if element:
element.click()
因此,如果user_input = 3
,表格元素不應被點擊,因爲它具有類inactive
即使文本是存在的。
如果user_input = 4
,則表單元素應該被點擊,因爲它沒有不活動的類和文本存在。
當前代碼不起作用,因爲我的xpath表達式是無效的,但我不知道檢查類和文本的正確方法是什麼。
如果'td'元素具有'inactive'類,我該如何防止點擊? – warchest
@warwarst啊,當然,更新。 – alecxe
謝謝,但由於某種原因xpath返回一個錯誤:'消息:沒有這樣的元素:無法找到元素:{「方法」:「xpath」,「選擇器」:「//div/table/tbody/td [包含(。,'4')] [not(contains(@class,'inactive'))]「}'。 **然而**,我可以直接用'// div/table/tbody/tr [1]/td [2]'找到並點擊它。看起來這個元素肯定存在,但是xpath並沒有採用它。 – warchest