Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当列表框不是select元素时,如何从列表框中选择选项?(Selenium,Python)_Python_Selenium - Fatal编程技术网

当列表框不是select元素时,如何从列表框中选择选项?(Selenium,Python)

当列表框不是select元素时,如何从列表框中选择选项?(Selenium,Python),python,selenium,Python,Selenium,我试图从屏幕上“烛台”旁边的第二个下拉菜单中选择“Day”选项 我不确定如何在没有选择id的情况下执行此操作。请提供建议 您可以单击下拉图标,然后单击要选择的选项。可以使用以下步骤: driver.get('https://www.dukascopy.com/swiss/english/marketwatch/historical/') WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.XP

我试图从屏幕上“烛台”旁边的第二个下拉菜单中选择“Day”选项

我不确定如何在没有选择id的情况下执行此操作。请提供建议


您可以单击下拉图标,然后单击要选择的选项。可以使用以下步骤:

driver.get('https://www.dukascopy.com/swiss/english/marketwatch/historical/')
WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"//iframe[contains(@src, 'historical_data_feed')]")))
driver.execute_script("return arguments[0].scrollIntoView(true);", WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//li[text()='Indices (CFD)']"))))
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH,"//div[text()='Tick']"))).click()
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH,"//div[text()='Day']"))).click()
输出

注意:这里的关键问题是如何检查下拉列表下的项目。您需要在调试模式下检查的Foe,如下所示:

  • 转到“打开开发人员检查模式”页面
  • 转到“源”选项卡
  • 单击下拉列表。它将显示选项
  • 现在按F8键,它将在调试器模式下暂停屏幕
  • 现在检查要选择的选项

  • 在网页上,下拉列表有一个特定的标签名称,即
    select
    。为了处理带有select标记的下拉列表,我们使用
    select
    类。 在您的情况下,它不是下拉列表,因此您必须以处理其余元素的方式来处理它。 就像你必须点击下拉按钮并选择你想要的元素一样

    下面有一个小脚本供参考

    driver = webdriver.Chrome()
    driver.get("https://www.dukascopy.com/swiss/english/marketwatch/historical/")
    frame = driver.find_elements_by_tag_name("iframe")
    print(len(frame))
    driver.switch_to.frame(0)
    driver.find_element_by_xpath("//div[text()='Tick']").click()
    driver.find_element_by_xpath("//div[text()='Day']").click()
    
    您也可以显式地等待更不容易出错的代码