【问题标题】:Selenium - dropdown choise shows new fields. how can I update driver, so it could see them?Selenium - 下拉选项显示新字段。如何更新驱动程序,以便它可以看到它们?
【发布时间】:2023-03-08 23:35:01
【问题描述】:

我得到了这个代码:

from selenium import webdriver
from selenium.webdriver.support.ui import Select

myurl = "https://foobar.pl"
driver = webdriver.Chrome()
driver.get(myurl)

select = Select(driver.find_element_by_xpath('/html/body/div/select'))
select.select_by_visible_text('foobar') 

time.sleep(5) 

选择“foobar”后会出现一个输入字段。 但在我尝试之后:

driver.find_element_by_xpath('/html/body/div/div[2]/input').click()

我明白了

ElementNotVisibleException:元素不可见

如何更新驱动程序,以便在不刷新页面的情况下看到输入(我会丢失我的选择)?

【问题讨论】:

    标签: python selenium dropdown


    【解决方案1】:

    你能试试下面的代码sn-p吗?您可能需要在单击和获取要检索的字段之间等待。

    select = Select(driver.find_element_by_xpath('/html/body/div/select'))
    select.select_by_visible_text('foobar') 
    
    time.sleep(5)
    
    driver.find_element_by_xpath('/html/body/div/div[2]/input').click()
    

    您首先需要单击该字段,然后等待,然后再次单击。

    【讨论】:

    • 我添加了 time.sleeps。现在不是时候。仍然不起作用。驱动程序在内存中有较早的页面版本
    • 单击下拉框之类的内容后,输入字段是否出现?如果这是正确的,那么您可能需要先单击输入字段,然后等待,然后再次单击。在您的代码中,您可能需要将点击添加到此元素“select.select_by_visible_text('foobar')”
    • "你可能需要在这个元素上添加点击 "select.select_by_visible_text('foobar')" - 我m trying, but i dont 知道怎么做。click() 方法不起作用。
    • 好的,我确实点击了它。仍然。司机没有看到新元素:/
    【解决方案2】:

    这通常发生在您与页面交互后 JavaScript 修改页面时。解决方法是使用WebDriverWait:

    from selenium.webdriver.support import ExpectedConditions as EC
    
    wait = WebDriverWait(driver, 5)
    input = wait.until(EC.element_to_be_clickable(By.xpath('/html/body/div/div[2]/input'))
    input.click()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      • 1970-01-01
      • 1970-01-01
      • 2014-01-01
      • 2011-11-25
      相关资源
      最近更新 更多