Selenium WebDriver findElement(By.xpath())不适合我
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Selenium WebDriver findElement(By.xpath())不适合我相关的知识,希望对你有一定的参考价值。
我已经通过xpath教程并检查了许多其他帖子,因此我不确定我缺少什么。我只是想通过xpath找到以下元素:
<input class="t-TextBox" type="email" test-id="test-username"/>
我尝试了很多东西,例如:
element = findElement(By.xpath("//[@test-id='test-username']"));
错误是Expression is not a legal expression
。
我在MacBook上使用Firefox
任何建议将不胜感激。
答案
element = findElement(By.xpath("//*[@test-id='test-username']");
element = findElement(By.xpath("//input[@test-id='test-username']");
(*) - 任何标记名
另一答案
您应该在xpath中添加标记名称,如:
element = findElement(By.xpath("//input[@test-id='test-username']");
另一答案
你的语法完全错误....你需要给驱动程序提供findelement
你的代码将是:
WebDriver driver = new FirefoxDriver();
WebeElement element ;
element = driver.findElement(By.xpath("//[@test-id='test-username']");
//你的xpath是:"//[@test-id='test-username']"
我建议试试这个:"//*[@test-id='test-username']"
另一答案
你错过了最后的右括号:
element = findElement(By.xpath("//[@test-id='test-username']"));
另一答案
只需要在xpath的开头添加*
并最后关闭括号。
element = findElement(By.xpath("//*[@test-id='test-username']"));
另一答案
您尚未指定要尝试进行绝对xpath搜索的html元素类型。在您的情况下,它是输入元素。
试试这个:
element = findElement(By.xpath("//input[@class='t-TextBox' and @type='email' and @test-
id='test-username']");
另一答案
正确的Xpath
语法如下:
//tagname[@value='name']
所以你应该写这样的东西:
findElement(By.xpath("//input[@test-id='test-username']"));
另一答案
你也可以使用包含:
element = findElement(By.xpath("//input[contains (@test-id,"test-username")]");
以上是关于Selenium WebDriver findElement(By.xpath())不适合我的主要内容,如果未能解决你的问题,请参考以下文章
轻松自动化---selenium-webdriver(python)
轻松自动化---selenium-webdriver(python)