我在网上看到了大约100个Java webdriver的触摸事件示例, 但没有一个是针对Python的。
请有人好心在这里发布一个,这样可以节省很多搜索时间。
以下是我尝试在Android模拟器上对元素进行基本双击以放大它的代码。非常感谢。
编辑:在Julian的帮助下,我能够找出缺失的链接:由于某种原因,触摸操作需要在结尾处添加一个额外的.perform()。下面你将看到一堆触摸事件的效果--而且代码更加简洁。享受吧!
编辑:在Julian的帮助下,我能够找出缺失的链接:由于某种原因,触摸操作需要在结尾处添加一个额外的.perform()。下面你将看到一堆触摸事件的效果--而且代码更加简洁。享受吧!
import unittest, time
from selenium import webdriver
print "Here are our available touch actions (ignore the ones that look like __xx__): ", dir(webdriver.TouchActions)
#print dir(webdriver)
class Test(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Remote(command_executor='http://localhost:8080/wd/hub', desired_capabilities=webdriver.DesiredCapabilities.ANDROID)
self.touch =webdriver.TouchActions(self.driver)
#self.driver = TouchActions(self.driver)
#self.driver = webdriver.Firefox()
self.driver.implicitly_wait(30)
def testHotmail(self):
self.driver.get("http://www.hotmail.com")
elem=self.driver.find_element_by_css_selector("input[name='login']")
#tap command
self.touch.tap(elem).perform()
time.sleep(2)
elem.send_keys("hello world")
time.sleep(2)
#double tap
self.touch.double_tap(elem).perform()
time.sleep(2)
#testing that regular webdriver commands still work
print self.driver.find_element_by_partial_link_text("Can't access").text
elem= self.driver.find_element_by_css_selector("input[type='submit']")
self.touch.tap(elem).perform()
time.sleep(3)
def tearDown(self):
time.sleep(3)
try:
self.driver.quit()
except Exception:
print(" TearDown Method: Browser seems already closed.")
pass
if __name__ == "__main__":
unittest.main()
这里是一个原始的Java示例:
WebElement toFlick = driver.findElement(By.id("image"));
// 400 pixels left at normal speed
Action flick = getBuilder(driver).flick(toFlick, 0, -400, FlickAction.SPEED_NORMAL)
.build();
flick.perform();
WebElement secondImage = driver.findElement(“secondImage”);
assertTrue(secondImage.isDisplayed());
webdriver.TouchActions(...)
。但是,因为您的代码单独导入了Remote和DesiredCapabilities,所以TouchActions不在导入的命名空间中。尝试使用from selenium import webdriver
,然后使用dir(webdriver.TouchActions)
查看方法。FYI,请比较cat py/selenium/webdriver/remote/__init__.py
和cat py/selenium/webdriver/__init__.py
。 - JulianHartyActionChains
的导入问题,你的问题很好,我不确定是否需要它。我在6年前写了这个答案,当时的代码足以帮助提问者。我现在没有在这个领域积极工作。请随意尝试并根据测试结果更新答案。至于你的另一个问题,我不知道是否有适当的问题 - 如果找不到合适的问题,那么在StackOverflow上提出一个新问题怎么样? - JulianHarty