Webdriver:通过占位符文本定位类型字段,然后通过 sendkey("test text") 将文本定位到类型字段中
Webdriver: Locate typefield via placeholder text then text via sendkey("test text") into the typefield
每次登录页面时,我一直在尝试将文本发送到具有不断变化的元素 id=PolarisTextField83
的文本字段(PolarisTextField## 不断更改其值,如 id=PolarisTextField45
)作为我发现 id 元素是动态的,HTML 唯一静态且唯一的部分是占位符示例文本,即 placeholder="e.g. Shirts"
.
因此,我想知道是否有一种方法可以定位 placeholder="e.g. Shirts"
然后将文本发送到其各自的类型字段 (PolarisTextField##)?
我试过用
driver.findElementsByTagName("e.g. Shirts").sendKeys("test text");
但了解到我无法在 findElementsByTagName
之后关注 .sendKeys()
。
我是 java 和 selenium 的新手,希望得到任何帮助 and/or 指导!!
试试下面的 xpath 来处理动态网页元素。
WebDriverWait wait = new WebDriverWait(driver, 30);
driver.findElement(By.xpath("//*[starts-with(@id,'PolarisTextField')]")).sendKeys("Test");
您可以使用 XPath 按占位符值查找元素
driver.findElement(By.xpath("//*[@placeholder='e.g. Shirts']")).sendKeys("test text");
要在元素内发送 字符序列,您可以使用以下任一方法 :
使用 css_selector
、id 和 placeholder 属性:
driver.findElement(By.cssSelector("[id^='PolarisTextField'][placeholder$='Shirts']")).sendKeys("test text");
使用 xpath
、id 和 placeholder 属性:
driver.findElement(By.xpath("//*[starts-with(@id, 'Shirts') and contains(@placeholder, 'Shirts')]")).sendKeys("test text");
理想情况下,要在元素中发送 字符序列 ,您必须为 elementToBeClickable()
引入 并且您可以使用以下任一项 :
cssSelector
:
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("[id^='PolarisTextField'][placeholder$='Shirts']"))).sendKeys("test text");
xpath
:
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//*[starts-with(@id, 'Shirts') and contains(@placeholder, 'Shirts')]"))).sendKeys("test text");
每次登录页面时,我一直在尝试将文本发送到具有不断变化的元素 id=PolarisTextField83
的文本字段(PolarisTextField## 不断更改其值,如 id=PolarisTextField45
)作为我发现 id 元素是动态的,HTML 唯一静态且唯一的部分是占位符示例文本,即 placeholder="e.g. Shirts"
.
因此,我想知道是否有一种方法可以定位 placeholder="e.g. Shirts"
然后将文本发送到其各自的类型字段 (PolarisTextField##)?
我试过用
driver.findElementsByTagName("e.g. Shirts").sendKeys("test text");
但了解到我无法在 findElementsByTagName
之后关注 .sendKeys()
。
我是 java 和 selenium 的新手,希望得到任何帮助 and/or 指导!!
试试下面的 xpath 来处理动态网页元素。
WebDriverWait wait = new WebDriverWait(driver, 30);
driver.findElement(By.xpath("//*[starts-with(@id,'PolarisTextField')]")).sendKeys("Test");
您可以使用 XPath 按占位符值查找元素
driver.findElement(By.xpath("//*[@placeholder='e.g. Shirts']")).sendKeys("test text");
要在元素内发送 字符序列,您可以使用以下任一方法
使用
css_selector
、id 和 placeholder 属性:driver.findElement(By.cssSelector("[id^='PolarisTextField'][placeholder$='Shirts']")).sendKeys("test text");
使用
xpath
、id 和 placeholder 属性:driver.findElement(By.xpath("//*[starts-with(@id, 'Shirts') and contains(@placeholder, 'Shirts')]")).sendKeys("test text");
理想情况下,要在元素中发送 字符序列 ,您必须为 elementToBeClickable()
引入
cssSelector
:new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("[id^='PolarisTextField'][placeholder$='Shirts']"))).sendKeys("test text");
xpath
:new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//*[starts-with(@id, 'Shirts') and contains(@placeholder, 'Shirts')]"))).sendKeys("test text");