【发布时间】:2019-09-20 20:20:26
【问题描述】:
我正在编写一个需要单击页面元素的脚本,但是,随着元素位置的变化,CSS 选择器每天都会发生变化。
今天叫:
PPTAmFCTable > tbody:nth-child(1) > tr:nth-child(11) > td:nth-child(3) > a:nth-child(1)
昨天是:
PPTAmFCTable > tbody:nth-child(1) > tr:nth-child(10) > td:nth-child(3) > a:nth-child(1)
明天可能是tr:nth-child(13) 左右。
我使用以下代码:
def click_element_bycss(browser,css,timeout):
element_present = EC.presence_of_element_located((By.CSS_SELECTOR,css))
WebDriverWait(browser, timeout).until(element_present)
browser.find_element_by_css_selector(css).click()
然后:
click_element_bycss(browser,"#PPTAmFCTable > tbody:nth-child(1) > tr:nth-child(11) > td:nth-child(3) > a:nth-child(1)",4)
在不知道第二个 tr:nth-child() 中的数字的情况下,如何以单击正确元素的方式编写代码?
元素 HTML:
<a href="/FC1/ItemList;jsessionid=E6B3D538CD809FDDC3DE69EA160C956D?WorkPool=PickingNotYetPicked&ExSDRange.RangeEndMillis=1556850660000&ProcessPath=PPTAmFC&ExSDRange.RangeStartMillis=1556850599999&shipmentType=TRANSSHIPMENTS">261</a>
想到一个循环 对于范围内的 i (1,20):tr:nth-child(i) 但希望有更聪明的东西。
【问题讨论】:
-
您需要使用相对定位器而不是绝对定位器。您可能需要通过文本查找元素。发布表格的 HTML。
标签: python selenium xpath css-selectors webdriverwait