我有一個由 JavaScript 生成的輸入字段<input class="postal-code form-text required form-control" autocomplete="postal-code" data-drupal-selector="edit-field-client-address-0-address-postal-code" type="text" id="edit-field-client-address-0-address-postal-code--bwzakXWpxR0" name="field_client_address[0][address][postal_code]" value="" size="10" maxlength="128" required="required" aria-required="true">正如你所看到的,每次 id 字符串都不同:id="edit-field-client-address-0-address-postal-code--bwzakXWpxR0"使用 Selenium 定位此 id 的正確方法是什么?
4 回答

慕尼黑5688855
TA貢獻1848條經驗 獲得超2個贊
你可以嘗試使用以下
driver.findElement(By.className("postal-code")).sendKeys("your value");

江戶川亂折騰
TA貢獻1851條經驗 獲得超5個贊
由于所需元素是一個<input>
元素,因此接下來移動您將調用click()
或sendKeys()
,因此要定位您需要使用的元素elementToBeClickable()
,您可以使用以下定位器策略之一:
cssSelector
:WebElement?element?=?new?WebDriverWait(driver,?20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("input.postal-code[id*='address-postal-code'][name^='field_client_address']")));
xpath
:WebElement?element?=?new?WebDriverWait(driver,?20).until(ExpectedConditions.elementToBeClickable(By.xpath("http://input[@class='postal-code?form-text?required?form-control'?and?contains(@id,?'address-postal-code')][starts-with(@name,?'field_client_address')]")));

Helenr
TA貢獻1780條經驗 獲得超4個贊
有很多看似獨特的屬性。你嘗試過其中的任何一個嗎?潛在的 CSS 選擇器
input[autocomplete='postal-code']
input[data-drupal-selector='edit-field-client-address-0-address-postal-code']
input[name='field_client_address[0][address][postal_code]']
或者你可以嘗試 ID 開頭,例如
input[id^='id="edit-field-client-address-0-address-postal-code--']

慕萊塢森
TA貢獻1810條經驗 獲得超4個贊
如果 id 是動態的,您可以嘗試使用其他定位器。
CSS 選擇器:
driver.findElement(By.cssSelector(input[data-drupal-selector='edit-field-client-address-0-address-postal-code'])).sendKeys("your value");
添加回答
舉報
0/150
提交
取消