为了账号安全,请及时绑定邮箱和手机立即绑定

Python (Selenium) 从 HHPRED 中选择下拉列表

Python (Selenium) 从 HHPRED 中选择下拉列表

FFIVE 2022-10-06 17:00:29
我正在尝试从 HHPRED 网站中选择下拉菜单项。(网址:https ://toolkit.tuebingen.mpg.de/tools/hhpred ),我不断碰到“找不到对象”或“对象不可点击/可选择”。# Input protein from txt file (predator_file variable)text_area = driver.find_element_by_id('__BVID__121')text_area.send_keys(predator_file)# Input PDB, SCOP, PFAM, and NCBI domains first_click = driver.find_element_by_id('__BVID__130') scop_click = driver.find_element_by_link_text("SCOPe") pfam_click = driver.find_element_by_link_text("Pfam") ncbi_click = driver.find_element_by_link_text("ncbi_")我知道我正在正确地使用 selenium,因为我的文本输入的第一部分正在正确复制,但是,当我从选择它到甚至选择我需要的东西的下拉菜单中工作时 - 我迷路了。请参阅下面检查的 HHPRED 元素和我正在处理的下拉列表。
查看完整描述

1 回答

?
MMTTMM

TA贡献1869条经验 获得超4个赞

目前,由于 tooc 凭据,您的网址无法访问。您可以使用以下代码从下拉列表中选择值/可见文本。


from selenium import webdriver

from selenium.webdriver.support.ui import Select 


select= WebDriverWait(driver, 30).until(

            EC.element_to_be_clickable((By.XPATH, "select element xpath")))


print(len(select.options))

select.select_by_value("")          # select by value

select.select_by_visible_text('')  # select by visible text

注意:请在您的解决方案中添加以下导入


from selenium.webdriver.support import expected_conditions as EC

from selenium.webdriver.common.by import By

from selenium.webdriver.support.ui import WebDriverWait

或者


driver.find_element_by_xpath("//select[@name='element_name']/option[text()='option_text']").click()

更新的解决方案:它是一个自定义下拉元素,因此您需要以不同的方式处理它。请找到以下代码供您参考。我已经验证了它并按预期工作。


driver.get("https://toolkit.tuebingen.mpg.de/tools/hhpred")

main_window = driver.current_window_handle

wait = WebDriverWait(driver, 20)


wait.until(EC.element_to_be_clickable((By.XPATH, "//button[@class='btn sign-in-link btn-href btn-sm']"))).click()

wait.until(EC.element_to_be_clickable((By.XPATH, "(//fieldset[@class='form-group']//input)[2]"))).send_keys('')

wait.until(EC.element_to_be_clickable((By.XPATH, "(//fieldset[@class='form-group']//input)[3]"))).send_keys('')

wait.until(EC.element_to_be_clickable((By.XPATH, "//button[@class='btn btn-secondary']"))).click()

wait.until(EC.element_to_be_clickable((By.XPATH, "//*[contains(text(), 'Got it!')]"))).click()


print wait.until(EC.element_to_be_clickable((By.XPATH, "//span[contains(text(),'Paste Example')]"))).text

driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

clickElement=wait.until(EC.element_to_be_clickable((By.XPATH, "//div[@class='multiselect__tags']")))

ActionChains(driver).move_to_element(clickElement).click().perform()

wait.until(EC.element_to_be_clickable((By.XPATH, "//li[*]//span[contains(text(),'TIGRFAMs_v15.0')]"))).click()

输出:

//img1.sycdn.imooc.com//633e996500013f6c13280730.jpg

查看完整回答
反对 回复 2022-10-06
  • 1 回答
  • 0 关注
  • 204 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信