0

所以,我正在尝试使用 jython 的 selenium java 库(是的,我知道 selenium 有一个 python 接口,但是出于公司团队合作的充分理由,如果可以做得好,访问纯 java 库更有意义)。

我只是想在这里做示例脚本:http: //seleniumhq.org/docs/03_webdriver.html#introducing-the-selenium-webdriver-api-by-example

我使用以下 jython 代码实现了它:

from org.openqa.selenium.firefox import FirefoxDriver
from org.openqa.selenium import By
from org.openqa.selenium import WebDriver
from org.openqa.selenium import WebElement
from org.openqa.selenium.support.ui import ExpectedCondition
from org.openqa.selenium.support.ui import WebDriverWait

driver = FirefoxDriver()
driver.get('http://www.google.com')
element = driver.findElement(By.name('q'))

# The array wrapper around the string is the only weird thing I encountered
element.sendKeys(["Cheese!"])
print "Page title is: " + driver.getTitle()

class ExpectedConditionTitle(ExpectedCondition):
  def apply(d):
    print(type(d))
    return d.title.toLowerCase().startsWith(["cheese!"])
  def equals(d):
    pass

print(type(driver))
WebDriverWait(driver, 10).until(ExpectedConditionTitle().apply())
print driver.getTitle()
driver.quit()

它在 ExpectedCondition 位上呕吐。我不知道如何为直到所需的品种创建一个子类。我的代码中出现以下错误:

最后的

Traceback(最里面的最后一个):文件“Example.py”,第 24 行,在?文件“Example.py”,第 19 行,应用 AttributeError:'instance' 对象没有属性 'title'

Traceback(最里面的最后一个):文件“Example.py”,第 24 行,在?文件“Example.py”,第 19 行,应用 AttributeError: getTitle

Traceback(最里面的最后一个):文件“Example.py”,第 22 行,在?TypeError: until(): 第一个参数不能被强制转换为 com.google.common.base.Function 或 com.google.common.base.Predicate

selenium ExpectedCondition 接口基本上只是Guava Predicate 接口的一个前端。

我对python或java不够精通,无法弄清楚这一点。任何人有任何想法我可以如何做到这一点?

4

0 回答 0