作为python的初学者,我正在尝试创建一个简单的自动登录项目。我要做的另一件事是,在html表的第四行上单击鼠标,以显示适当的内容。该段的html代码为:
<tr class="tbl_seznam_barva_1" onclick="setTimeout('__doPostBack(\'ctl02$ctl00$BrowseSql1\',\'Select$0\')',470);" onmouseover="radekSeznamuClass=this.className;this.className='RowMouseOver';" onmouseout="this.className=radekSeznamuClass;">
<td>virtuálny terminál</td>
</tr>
如何执行此“ onclick”事件?
from selenium import webdriver
#...
browser = webdriver.Firefox()
elem = browser.find_element_by_name('txtUsername')
elem.send_keys('myLogin' + Keys.RETURN)
elem = browser.find_element_by_xpath("//tr[4]")
# some code for event execution goes here...
答案 0 :(得分:2)
如果您想对元素为click()
的元素进行virtuálny terminál
的操作,可以使用以下方法实现:
browser.find_element_by_xpath("//*[text()='virtuálny terminál']").click()
如果需要单击更多元素,则可以在所有元素上使用for循环。
elements = browser.find_element_by_xpath("//tr[4]")
for i in elements:
print(i.text)
您可以使用ActionChains
:
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
browser = webdriver.Firefox()
my_elem = browser.find_element_by_xpath("//tr[4]")
action = ActionChains(browser)
action.move_to_element(my_elem)
# action.move_to_element_with_offset(my_elem, 5, 5)
action.click()
action.perform()
如果您无法使用chromedriver,而您无事可做,则可以使用execute_script
:
element = browser.find_element_by_xpath("//tr[4]")
browser.execute_script("arguments[0].click();", element)
答案 1 :(得分:0)
问题是人们应该等待网页完全加载
在elem.send_keys('myLogin' + Keys.RETURN)
行之后,网页需要时间来呈现内容,因此应添加一个延迟时间:
import time
# ...
elem.send_keys('myLogin' + Keys.RETURN)
time.sleep(1)
elem=browser.find_element_by_xpath("//tr[4]")
elem.click()