使用 python 的硒

Selenium using python

我正在尝试 post 使用 selenium 脚本在 http://indianrailforums.in using selenium script. I am able to login and reach this page: http://indiarailinfo.com/blog 上进行一些操作,但是在我单击 post 按钮后,我无法在文本区域中发送文本。

这是我的代码:

from selenium import webdriver
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Firefox()

driver.get("http://indiarailinfo.com")
element = driver.find_element_by_name("e")
element.send_keys("yagyank@gmail.com")
element = driver.find_element_by_name("p")
element.send_keys("suvrit")
element.submit()
driver.get("http://indiarailinfo.com/blog")
element = driver.find_element_by_link_text('Post')
element.click()
element = driver.find_element_by_xpath("/html/body/div[1]/div[5]/table/tbody/tr/td[1]/div[1]/div[1]/div/div/form/textarea")
#element.sendKeys(Keys.HOME + "abc");
#element = driver.find_element_by_name("TrainBlog")
element.send_keys("suvrit")
#driver.quit()

编辑:通过使用提交按钮并在调用 xpath

之前使用 driver.implicitly_wait(10) 解决了问题

我能够 post 使用 PhantomJS 驱动程序。它也应该适用于 Firefox。

我的代码是:

from selenium import webdriver
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.PhantomJS()

driver.get("http://indiarailinfo.com")
element = driver.find_element_by_name("e")
element.send_keys("yagyank@gmail.com")
element = driver.find_element_by_name("p")
element.send_keys("suvrit")
element.submit()
driver.get("http://indiarailinfo.com/blog")
element = driver.find_element_by_link_text('Post')
element.click()
element = driver.find_element_by_xpath("/html/body/div[1]/div[5]/table/tbody/tr/td[1]/div[1]/div[1]/div/div/form/textarea")
print element.tag_name
#element.sendKeys(Keys.HOME + "abc");
#element = driver.find_element_by_name("TrainBlog")
element.send_keys("chuh-pook")
element.submit()
#driver.quit()

问题是您还没有提交表格。要么调用 submit():

element = driver.find_element_by_xpath("/html/body/div[1]/div[5]/table/tbody/tr/td[1]/div[1]/div[1]/div/div/form/textarea")
element.send_keys("suvrit")
element.submit()  # it would find the parent form and submit it

或者,单击 post 按钮:

post = driver.find_element_by_css_selector('input.postbtn')
post.click()