だから、私はjythonからセレンのJavaライブラリを使用しようとしています(はい、セレンには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 ビットを突いています。までに必要な種類のサブクラスを作成する方法がわかりません。コードのバリエーションで次のエラーが発生しました。
過去
トレースバック (最も内側の最後): ファイル "Example.py"、24 行目、? ファイル「Example.py」、19 行目、適用 AttributeError: 'instance' オブジェクトに属性 'title' がありません
とトレースバック (最も内側の最後): ファイル "Example.py"、24 行目、? ファイル「Example.py」、19 行目、apply AttributeError: getTitle 内
とトレースバック (最も内側の最後): ファイル "Example.py"、22 行目、? TypeError: until(): 最初の引数を com.google.common.base.Function または com.google.common.base.Predicate に強制することはできません
セレンのExpectedCondition インターフェースは、基本的にGuava Predicate インターフェースの前面にすぎません。
私はこれを理解するのに十分なPythonまたはJavaに精通していません。どうすればこれを達成できるか、誰にもアイデアがありますか?