簡體   English   中英

在下拉菜單中選擇動態元素,Selenium Python

[英]Selecting Dynamic Element in Drop Down Menu, Selenium Python

我正在嘗試 select 下拉菜單中的輸入框。 但是,輸入框本身似乎是動態的。 我瀏覽過類似的帖子,但它們似乎是針對特定問題的。 對於動態元素,我已經遇到過幾次這個問題,我希望了解使用動態元素的一般方法。

以下是我尋求select的元素的詳細信息:

<input class="lui-search__input ng-pristine ng-valid ng-empty ng-valid-maxlength ng-touched" maxlength="5000" q-placeholder="Object.Listbox.Search" ng-model="query" ng-disabled="disabled" autocomplete="" spellcheck="false" ng-trim="false" type="text" qva-blur="blurred()" qva-focus="autoFocus" qv-escape="escape($event)" qv-enter="enter($event)" placeholder="Search in listbox" aria-invalid="false" xpath="1">

(如果這不是有用的信息,請告訴我,我會更新)。

相對 xpath 變化:

//body/div[8]/div[1]/div[1]/div[1]/ng-transclude[1]/div[1]/div[3]/div[1]/article[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/input[1]

在一個例子中

親屬 xpath 的另一個實例:

//body/div[7]/div[1]/div[1]/div[1]/ng-transclude[1]/div[1]/div[3]/div[1]/article[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/input[1]

我曾嘗試通過classcss selector select,但沒有成功。 我真的很想了解如何處理這個特定問題,以及我應該在元素中的哪個位置為動態元素的未來實例玩耍的一般想法。

謝謝!

(如果我提供的元素詳細信息沒有幫助,也可以使用以下代碼訪問該元素:)

driver.get("https://bi.prozorro.org/sense/app/fba3f2f2-cf55-40a0-a79f-b74f5ce947c2/sheet/NFTrm/state/analysis")

driver.find_element_by_xpath("//thead/tr[1]/th[2]").click()

#the input box I am attempting to select to no avail:
while True:
        try:
            WebDriverWait(driver, 25).until(EC.presence_of_element_located((By.XPATH, "//body/div[7]/div[1]/div[1]/div[1]/ng-transclude[1]/div[1]/div[3]/div[1]/article[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/input[1]")))
            break
        except TimeoutException:
            print("Loading took too much time!")

您可以使用其中一個屬性來找到它。

XPATH:

//input[@placeholder='Search in listbox']

WebElement是一個Angular元素。 因此,理想情況下,單擊您需要為element_to_be_clickable()引入WebDriverWait的元素,您可以使用以下任一定位器策略

  • 使用XPATH

     driver.get('https://bi.prozorro.org/sense/app/fba3f2f2-cf55-40a0-a79f-b74f5ce947c2/sheet/NFTrm/state/analysis') WebDriverWait(driver, 60).until(EC.element_to_be_clickable((By.XPATH, "//th[@tid='st.header']//span[@title='Учасник']//following::th[@tid='st.header.search']"))).click() WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@placeholder='Search in listbox']"))).click()
  • 注意:您必須添加以下導入:

     from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
  • 瀏覽器快照:

普羅佐羅

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM