使用 Splinter 在网站的文本区域中填写 table 或值列表
Fill a table or list of values in textarea in website using Splinter
我正在尝试编写一个脚本来自动搜索多个条目。这是输入:
<mirna-1>
<mirna-2>
<mirna-3>
:
:
网址是https://www.mirnet.ca/miRNet/faces/upload/MirUploadView.xhtml
如何将 mirna-1,.... 填入 miRNA 列表框。我做了以下尝试但失败了:
gecko = os.path.normpath('~/geckodriver')
nirnet_Results = []`
browser = Browser(executable_path=gecko)
browser.visit('https://www.mirnet.ca/miRNet/faces/home.xhtml')
# click miRNA_list
xpath = '//*[@id="j_idt39:j_idt55"]'
browser.find_by_xpath(xpath).click()
time.sleep(1)
#Select Human
xpath = '//*[@id="form:j_idt34"]/div[3]/span'
browser.find_by_xpath(xpath).click()
time.sleep(1)
xpath = '//*[@id="form:j_idt34_1"]'
browser.find_by_xpath(xpath).click()
time.sleep(1)
# select miRBase ID type
xpath = '//*[@id="form:j_idt38"]/div[3]/span'
browser.find_by_xpath(xpath).click()
time.sleep(1)
xpath = '//*[@id="form:j_idt38_1"]'
browser.find_by_xpath(xpath).click()
time.sleep(1)
# select Tissue type
xpath = '//*[@id="form:sourceOpt"]/div[3]/span'
browser.find_by_xpath(xpath).click()
time.sleep(1)
xpath = '//*[@id="form:sourceOpt_1"]'
browser.find_by_xpath(xpath).click()
time.sleep(1)
# select target type
xpath = '//*[@id="form:targetOpts"]/div[3]/span'
browser.find_by_xpath(xpath).click()
time.sleep(1)
xpath = '//*[@id="form:targetOpts_1"]'
browser.find_by_xpath(xpath).click()
time.sleep(1)
# Fill miRNA list
xpath = '//*[@id="form:listData"]'
browser.find_by_xpath(xpath).click()
time.sleep(1)
for mir in known_mir:
browser.fill('form:listData',mir)
browser.fill('form:listData','\n')
我成功地选择了开始下拉列表中的选项,当我尝试将名称列表粘贴到 miRNA 列表中时,我得到的所有名称都是这样的:
<mirna-1><mirna-2><mirna-3>....
而正确的格式是每个名字都应该在下一行。这该怎么做。请建议。谢谢。
虽然我会推荐 selenium 来做这样的事情,但你似乎想坚持使用 splinter。以下修复使用分裂。重现此问题时,每次 browser.fill()
为 运行 时,它都会替换已写入的文本。由于您没有在代码中包含 known_mir
的内容,因此我假设它是一个列表(如果我错了请纠正我)。我尝试将您想要放入表格的内容组合起来,但它奏效了。
替换:
for mir in known_mir:
browser.fill('form:listData',mir)
browser.fill('form:listData','\n')
与:
browser.fill('form:listData', '\n'.join(mir for mir in known_mir))
我的代码所做的就是组合 known_mir
.
中的每个字符串
您可以使用 Selenium Chrome Driver
和 python
填写此表格。如果您以前没有使用过 selenium 并且想使用 selenium.However 这里是 selenium 的 official website .
为了install
selenium 使用命令行
pip install -U selenium
你需要从以下网站website Chromedriver下载chrome基于compatibility
的驱动程序,例如chrome browser
支持chrome driver
。总是喜欢chrome 驱动程序和 chrome 浏览器的最新版本。
这是填写表格的硒代码
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
from selenium import webdriver
import time
driver=webdriver.Chrome('path to chrome driver exe') #example : 'C:\chromedriver\chromedriver.exe'
driver.get("https://www.mirnet.ca/miRNet/faces/upload/MirUploadView.xhtml")
#select Organism here
WebDriverWait(driver,5).until(EC.element_to_be_clickable((By.ID,"form:j_idt34_label"))).click()
time.sleep(2)
element=WebDriverWait(driver, 5).until(EC.visibility_of_element_located((By.XPATH,"//div[@class='ui-selectonemenu-items-wrapper']//ul[@id='form:j_idt34_items']//li[contains(.,'H. sapiens (human)')]")))
ActionChains(driver).move_to_element(element).send_keys(Keys.UP).send_keys(Keys.DOWN).send_keys(Keys.ENTER).perform()
#select ID type here
WebDriverWait(driver,5).until(EC.element_to_be_clickable((By.ID,"form:j_idt38_label"))).click()
time.sleep(2)
element=WebDriverWait(driver, 5).until(EC.visibility_of_element_located((By.XPATH,"//div[@class='ui-selectonemenu-items-wrapper']//ul[@id='form:j_idt38_items']//li[contains(.,'miRBase ID')]")))
ActionChains(driver).move_to_element(element).send_keys(Keys.UP).send_keys(Keys.DOWN).send_keys(Keys.ENTER).perform()
#select Tissue here
WebDriverWait(driver,5).until(EC.element_to_be_clickable((By.ID,"form:sourceOpt_label"))).click()
time.sleep(2)
element=WebDriverWait(driver, 5).until(EC.visibility_of_element_located((By.XPATH,"//div[@class='ui-selectonemenu-items-wrapper']//ul[@id='form:sourceOpt_items']//li[contains(.,'Exosomes [1250]')]")))
ActionChains(driver).move_to_element(element).send_keys(Keys.UP).send_keys(Keys.DOWN).send_keys(Keys.ENTER).perform()
#select Target type here
WebDriverWait(driver,5).until(EC.element_to_be_clickable((By.ID,"form:targetOpts_label"))).click()
time.sleep(2)
element=WebDriverWait(driver, 5).until(EC.visibility_of_element_located((By.XPATH,"//div[@class='ui-selectonemenu-items-wrapper']//ul[@id='form:targetOpts_items']//li[contains(.,'Genes')]")))
ActionChains(driver).move_to_element(element).send_keys(Keys.UP).send_keys(Keys.DOWN).send_keys(Keys.ENTER).perform()
items=['mirna-1','mirna-2','mirna-3','mirna-4']
for item in items:
element=WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,"//textarea[@id='form:listData']")))
element.send_keys(item)
element.send_keys(Keys.RETURN)
输出:
我正在尝试编写一个脚本来自动搜索多个条目。这是输入:
<mirna-1>
<mirna-2>
<mirna-3>
:
:
网址是https://www.mirnet.ca/miRNet/faces/upload/MirUploadView.xhtml
如何将 mirna-1,.... 填入 miRNA 列表框。我做了以下尝试但失败了:
gecko = os.path.normpath('~/geckodriver')
nirnet_Results = []`
browser = Browser(executable_path=gecko)
browser.visit('https://www.mirnet.ca/miRNet/faces/home.xhtml')
# click miRNA_list
xpath = '//*[@id="j_idt39:j_idt55"]'
browser.find_by_xpath(xpath).click()
time.sleep(1)
#Select Human
xpath = '//*[@id="form:j_idt34"]/div[3]/span'
browser.find_by_xpath(xpath).click()
time.sleep(1)
xpath = '//*[@id="form:j_idt34_1"]'
browser.find_by_xpath(xpath).click()
time.sleep(1)
# select miRBase ID type
xpath = '//*[@id="form:j_idt38"]/div[3]/span'
browser.find_by_xpath(xpath).click()
time.sleep(1)
xpath = '//*[@id="form:j_idt38_1"]'
browser.find_by_xpath(xpath).click()
time.sleep(1)
# select Tissue type
xpath = '//*[@id="form:sourceOpt"]/div[3]/span'
browser.find_by_xpath(xpath).click()
time.sleep(1)
xpath = '//*[@id="form:sourceOpt_1"]'
browser.find_by_xpath(xpath).click()
time.sleep(1)
# select target type
xpath = '//*[@id="form:targetOpts"]/div[3]/span'
browser.find_by_xpath(xpath).click()
time.sleep(1)
xpath = '//*[@id="form:targetOpts_1"]'
browser.find_by_xpath(xpath).click()
time.sleep(1)
# Fill miRNA list
xpath = '//*[@id="form:listData"]'
browser.find_by_xpath(xpath).click()
time.sleep(1)
for mir in known_mir:
browser.fill('form:listData',mir)
browser.fill('form:listData','\n')
我成功地选择了开始下拉列表中的选项,当我尝试将名称列表粘贴到 miRNA 列表中时,我得到的所有名称都是这样的:
<mirna-1><mirna-2><mirna-3>....
而正确的格式是每个名字都应该在下一行。这该怎么做。请建议。谢谢。
虽然我会推荐 selenium 来做这样的事情,但你似乎想坚持使用 splinter。以下修复使用分裂。重现此问题时,每次 browser.fill()
为 运行 时,它都会替换已写入的文本。由于您没有在代码中包含 known_mir
的内容,因此我假设它是一个列表(如果我错了请纠正我)。我尝试将您想要放入表格的内容组合起来,但它奏效了。
替换:
for mir in known_mir:
browser.fill('form:listData',mir)
browser.fill('form:listData','\n')
与:
browser.fill('form:listData', '\n'.join(mir for mir in known_mir))
我的代码所做的就是组合 known_mir
.
您可以使用 Selenium Chrome Driver
和 python
填写此表格。如果您以前没有使用过 selenium 并且想使用 selenium.However 这里是 selenium 的 official website .
为了install
selenium 使用命令行
pip install -U selenium
你需要从以下网站website Chromedriver下载chrome基于compatibility
的驱动程序,例如chrome browser
支持chrome driver
。总是喜欢chrome 驱动程序和 chrome 浏览器的最新版本。
这是填写表格的硒代码
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
from selenium import webdriver
import time
driver=webdriver.Chrome('path to chrome driver exe') #example : 'C:\chromedriver\chromedriver.exe'
driver.get("https://www.mirnet.ca/miRNet/faces/upload/MirUploadView.xhtml")
#select Organism here
WebDriverWait(driver,5).until(EC.element_to_be_clickable((By.ID,"form:j_idt34_label"))).click()
time.sleep(2)
element=WebDriverWait(driver, 5).until(EC.visibility_of_element_located((By.XPATH,"//div[@class='ui-selectonemenu-items-wrapper']//ul[@id='form:j_idt34_items']//li[contains(.,'H. sapiens (human)')]")))
ActionChains(driver).move_to_element(element).send_keys(Keys.UP).send_keys(Keys.DOWN).send_keys(Keys.ENTER).perform()
#select ID type here
WebDriverWait(driver,5).until(EC.element_to_be_clickable((By.ID,"form:j_idt38_label"))).click()
time.sleep(2)
element=WebDriverWait(driver, 5).until(EC.visibility_of_element_located((By.XPATH,"//div[@class='ui-selectonemenu-items-wrapper']//ul[@id='form:j_idt38_items']//li[contains(.,'miRBase ID')]")))
ActionChains(driver).move_to_element(element).send_keys(Keys.UP).send_keys(Keys.DOWN).send_keys(Keys.ENTER).perform()
#select Tissue here
WebDriverWait(driver,5).until(EC.element_to_be_clickable((By.ID,"form:sourceOpt_label"))).click()
time.sleep(2)
element=WebDriverWait(driver, 5).until(EC.visibility_of_element_located((By.XPATH,"//div[@class='ui-selectonemenu-items-wrapper']//ul[@id='form:sourceOpt_items']//li[contains(.,'Exosomes [1250]')]")))
ActionChains(driver).move_to_element(element).send_keys(Keys.UP).send_keys(Keys.DOWN).send_keys(Keys.ENTER).perform()
#select Target type here
WebDriverWait(driver,5).until(EC.element_to_be_clickable((By.ID,"form:targetOpts_label"))).click()
time.sleep(2)
element=WebDriverWait(driver, 5).until(EC.visibility_of_element_located((By.XPATH,"//div[@class='ui-selectonemenu-items-wrapper']//ul[@id='form:targetOpts_items']//li[contains(.,'Genes')]")))
ActionChains(driver).move_to_element(element).send_keys(Keys.UP).send_keys(Keys.DOWN).send_keys(Keys.ENTER).perform()
items=['mirna-1','mirna-2','mirna-3','mirna-4']
for item in items:
element=WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,"//textarea[@id='form:listData']")))
element.send_keys(item)
element.send_keys(Keys.RETURN)