Selenium WebDriver(2.21.0) を使用して Web 要素をクリックしようとしています。
Selenium IDE を操作しようとすると正常に動作しますが、Firefox ドライバーの Java 実装を使用して同じ一連のアクションを実行しようとすると、間違ったページが表示されます。
コードの実行中に目的の要素まで手動でスクロールすると、機能します。
を使用して、Web 要素が表示され、有効になっていることを確認しています
By by = By.xpath("(//a[contains(@href, 'javascript:void(0);')])[26]"); //**Edit:** this is how i
//am getting the locator
WebElement element = driver.findElement(by);
return (element.isEnabled() || element.isDisplayed()) ? element : null;
いくつかの要素を返しますが、私が期待しているものではありません。
Selenium webdriver はほとんどの場合、(画面に表示されていない場合) 要素にスクロールし、必要な対話を行うため、これは私には奇妙に見えます。
one、twoのようないくつかの答えを試しましたが、成功しませんでした。
前もって感謝します!
編集:これはIDEのエクスポートされたコードです(java/JUnit4/webdriver)
package com.example.tests;
import java.util.regex.Pattern;
import java.util.concurrent.TimeUnit;
import org.junit.*;
import static org.junit.Assert.*;
import static org.hamcrest.CoreMatchers.*;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.Select;
public class Bandar {
private WebDriver driver;
private String baseUrl;
private StringBuffer verificationErrors = new StringBuffer();
@Before
public void setUp() throws Exception {
driver = new FirefoxDriver();
baseUrl = "http://e.weibo.com/";
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
}
@Test
public void testBandar() throws Exception {
driver.get(baseUrl + "/nescafechina");
driver.findElement(By.xpath("(//a[contains(@href, 'javascript:void(0);')])[26]")).click();
driver.findElement(By.xpath("(//a[contains(@href, 'javascript:void(0);')])[12]")).click();
}
@After
public void tearDown() throws Exception {
driver.quit();
String verificationErrorString = verificationErrors.toString();
if (!"".equals(verificationErrorString)) {
fail(verificationErrorString);
}
}
private boolean isElementPresent(By by) {
try {
driver.findElement(by);
return true;
} catch (NoSuchElementException e) {
return false;
}
}
}