【发布时间】:2018-01-30 16:04:12
【问题描述】:
我收到一条错误消息,提示“指定了无效或非法的选择器”。注意:- 在最后一个 findElement 语句中,我将 cssSelector 指定为 ("//td[id*='verificationMsg']/p[2]),因为 id 是我能找到的用于捕获数据的最接近的唯一定位器。并且它的那部分没有改变。例如:- 我当前的 id 值是 id="m_7959323670053369637verificationMsg" ,其中数字在重复的电子邮件中不断变化,但它的“verificationMsg”部分没有。
这是参考我之前的问题和我得到的建议
package Amazon;
import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.KeyEvent;
import java.util.Iterator;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.interactions.Actions;
public class VerifyAmazonSignInPage {
public static void main(String[] args) throws AWTException {
// TODO Auto-generated method stub
System.setProperty("webdriver.chrome.driver", "C://Selenium jars/chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
driver.get("http://www.gmail.com");
driver.findElement(By.id("identifierId")).sendKeys("gaurav.thantry@gmail.com");
Robot rob = new Robot();
rob.keyPress(KeyEvent.VK_ENTER);
rob.keyRelease(KeyEvent.VK_ENTER);
driver.findElement(By.name("password")).sendKeys("******");
rob.keyPress(KeyEvent.VK_ENTER);
rob.keyRelease(KeyEvent.VK_ENTER);
driver.findElement(By.xpath("//span[text()='Amazon password assistance']")).click();
String v = driver.findElement(By.cssSelector("td[id*='verificationMsg']/p[2]")).getText();
System.out.println(v);
}
}
【问题讨论】:
-
您是否尝试过在您的 xpath 中使用 contains 方法,如下所示?
//td[contains(@id,"verificationMsg")/p[2] -
您编写了错误的方法来使用 cssSelector 定位器定位您的 web 元素。试试这个
td[id*='verificationMsg']>p[2]
标签: java eclipse selenium selenium-webdriver