是编码的新手,并一直试图选择一个下拉框来选择基础选项。能够与该页面上的其他下拉菜单进行交互,尽管这个特殊的菜单似乎有所不同,因为我无法访问它/与之交互
我提供了网页下拉框的快照,特定下拉框的源代码以及我已经尝试过并出错的代码。
将不胜感激任何帮助/指针。是编码的新手(python或HTML!),但对Excel VBA有所了解。
尝试粘贴图片,尽管似乎我还不适合直接粘贴。我正在尝试与页面上的“选择基金”下拉框进行交互。尝试了以下代码:
browser.find_element_by_id('strategy').send_keys(fund_strat) #works fine
browser.find_element_by_xpath('//*[@id="share-class"]').click()
#this line directly above does not work, including variants below:
browser.find_element_by_xpath('THE BELOW XPATHS').click()
//*[@id="price-performance-form"]/div[3]
//*[@id="price-performance-form"]/div[3]/div
//*[@id="price-performance-form"]/div[3]/div/a
//*[@id="price-performance-form"]/div[3]/div/a/span
//*[@id="share-class"]
//*[@id="share-class"]/option[1]
Also tried using CSS selector
browser.find_element_by_css_selector('a.option-selected').click()
browser.find_element_by_css_selector('a.option-selected').send_keys('NAME OF FUNDS ETC')
解决方案
如果以下行适合您,
browser.find_element_by_xpath('//*[@id="share-class"]').click()
#this line directly above does not work, including variants below:
您需要等待DOM上可见的元素。即,css =
如今,大多数Web应用程序都在使用AJAX技术。因此,您需要添加一个等待时间(直到元素在页面上可见或在DOM上加载)。
因此,尝试使用Selenium Waits(输入以下代码):
from selenium.webdriver.support import expected_conditions as EC
wait = WebDriverWait(driver, 10)
element = wait.until(EC.element_to_be_clickable((By.XX, 'element')))
XX = CSS,XPATH,ID等
现在,如果要在选定的文本框上书写,则只需尝试在input元素上发送键即可。
browser.find_element_by_css_selector('.editable-select input')
为了获得更好的选择器,请使用父元素来定位确切的元素。
CSS = 'div[class$="custom-select custom-select-open"] .editable-select input'
如果要选择下拉选项,则知道值。尝试使用以下CSS。
browser.find_element_by_css_selector('select option[value$="Your Value"]')
要么
如果您不知道这些值,请在输入文本框后附加整个DOM feed。我将尝试通过下拉菜单项来帮助您。
另外,您还需要锻炼一些其他步骤。使用内部文本获取所有元素。
注意:您可以使用XPATH进行元素的文本搜索。范例:xpath = "//*[contains(text(),'your text')]"
因篇幅问题不能全部显示,请点此查看更多更全内容