我很难让selenium在网站上定位一个元素(确切地说是gleam)。理想情况下,我希望驱动程序将键发送到输入域,但selenium由于某些原因不会找到它。
我已经尝试过通过ID、Xpath和名称进行定位。关于如何定位这个元素有什么建议吗?
下面是html:
<input
id="contestant[name]"
name="name"
ng-model-options="{ debounce: 300 }"
ng-model="contestantState.form.name"
ng-pattern=".*"
placeholder="Alice Smith" required=""
style="width: 246px"
type="text"
class="ng-empty
ng-invalid
ng-invalid-required
ng-valid-pattern
ng-dirty
ng-valid-parse
ng-touched"
>发布于 2019-04-23 20:43:04
试试其中的一个
By.CssSelector("[id*='contestant']")
By.CssSelector("[ng-model='contestantState.form.name']")
By.CssSelector("[name='name']")发布于 2019-04-23 16:47:49
使用WebDriverWait处理Web Page.Try上的动态元素,如下所示。如果此代码不起作用,请检查您的输入元素是否包含在任何iframe中。
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions
from selenium import webdriver
inputelement=WebDriverWait(driver,40).until(expected_conditions.element_to_be_clickable((By.ID,'contestant[name]')))
inputelement.send_keys("Apple")发布于 2019-04-24 19:07:23
要将字符序列发送到所需的元素,因为该元素是Angular元素,因此需要引入WebDriverWait才能使该元素可单击,并且可以使用以下Locator Strategies之一
使用CSS_SELECTOR的
WebDriverWait(浏览器,20).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"input.ng-empty.ng-invalid.ng-invalid-required.ng-valid-pattern.ng-dirty.ng-valid-parse.ng-touched[id=\"contestantname\"]"))).send_keys("ml2017")
XPATH:WebDriverWait(浏览器,20).until(EC.element_to_be_clickable((By.XPATH,“//输入[@class=‘ng-空ng-无效ng-无效ng-必需ng-有效模式ng-脏ng-有效解析ng-触摸’和@id=\"contestantname\"]"))).send_keys("ml2017")
https://stackoverflow.com/questions/55806042
复制相似问题