我对硒有问题。 我有类似的DOM结构:
<div class="window__popup" style="display: block; transform: translateY(0px);">
...
<div id="user_product_name" class="input__block">
...
<input type="text" name="name" required="required" class="input">
<div class="placeholder">Представьтесь, пожалуйста</div>
...
</div>
...
</div>
因此,默认情况下不会显示此div,但是当我单击按钮时,它会打开。我有这段代码来查找包含id的div:
self.form_elements["UserName"] = Input(self._driver, Locator("xpath", "div[@id='user_product_name']"))
或
self.form_elements["UserName"] = Input(self._driver, Locator("id", "user_product_name"))
这两个选项均无效,但会引发超时异常:
selenium.common.exceptions.TimeoutException: Message:
但是,此代码可以正常工作:
self.form_elements["UserName"] = Input(self._driver, \
Locator("xpath", "//div[contains(@class, 'window__popup')]//div[contains(@class, 'placeholder') and text()='Представьтесь, пожалуйста']/ancestor::div[contains(@class, 'input__block')]"))
这就是为什么我认为问题出在隐藏元素内部的id为div的原因。如何在不编写大型xpath的情况下解决该问题?
编辑:
这段代码找到了一个元素,但是当我尝试输入时,它将引发异常。抱歉,正在编辑。
答案 0 :(得分:0)
您的工作定位器和不工作定位器略有不同。
在工作定位器中,您正在div类cd /full/path/log
ls | grep AAAA*log
cd - #go back to the original path
中的div中查找元素。据我了解,window__popup
不是唯一元素,并且可能存在于不可见的不同DOM部分中。
检查您在DOM中有多少个div[@id='user_product_name']
id的元素。不要忘记user_product_name
返回位于DOM中且不可见的第一个元素。
尝试使用以下CSS选择器:
driver.find_elemet...