gpt4 book ai didi

python - 在下拉菜单中选择动态元素,Selenium Python

转载 作者:行者123 更新时间:2023-12-04 08:29:27 25 4
gpt4 key购买 nike

我正在尝试在下拉菜单中选择一个输入框。然而,输入框本身似乎是动态的。我看过类似的帖子,但它们似乎是针对特定问题的。我已经在动态元素上遇到过几次这个问题,我希望了解处理动态元素的一般方法。
以下是我要选择的元素的详细信息:

<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]
我尝试通过 class 选择和 css selector没有运气。我真的很想了解如何处理这个特定问题,以及我应该在元素中的哪个位置为动态元素的 future 实例进行处理的一般想法。
谢谢!
(如果我提供的元素详细信息没有帮助,也可以使用以下代码访问该元素:)
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!")

最佳答案

WebElementAngular元素。所以理想情况下点击你需要诱导的元素 WebDriverWaitelement_to_be_clickable()您可以使用以下任一 Locator Strategies :

  • 使用 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
  • 浏览器快照:

  • prozorro

    关于python - 在下拉菜单中选择动态元素,Selenium Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65098176/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com