在python selenium中选择元素的替代方法是什么?

时间:2017-10-02 19:29:28

标签: python-3.x selenium

此html中的元素是动态的:

<textarea class="Medium" id="z46a662fd68e143128cd31e6978f63a5c" 
name="Description" placeholder="" data-val-length="Character limit (8000) 
exceeded" data-val-length-max="8000" data-val-editor-
id="z46a662fd68e143128cd31e6978f63a5c" data-val-position="0"></textarea>

我无法在我的脚本中多次使用此代码:

driver.find_element_by_css_selector('z46a662fd68e143128cd31e6978f63a5c')

使用下面的代码,我能够按名称找到元素 - 但无法使用send_keys来输入数据。

driver.find_element_by_name('Description')

我想知道这类问题的不止一种解决方法 - 提前谢谢。

1 个答案:

答案 0 :(得分:2)

第一个语句不是一个合适的CSS选择器,因此它失败了。如果您想通过CSS选择,可以像这样指定:

driver.find_element_by_css_selector('textarea#z46a662fd68e143128cd31e6978f63a5c')

如果ID 静态

,您可以按ID搜索
driver.find_element_by_id('z46a662fd68e143128cd31e6978f63a5c')

然而,看起来您的ID是动态的,在这种情况下,按照名称查找,实际上是最好的方法。

要发送密钥,您可以:

driver.find_element_by_name('Description').send_keys("Hello")

如果这不起作用,请确保已加载页面并呈现textarea。您可能需要使用Wait

element = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.Name, "Description"))
element.send_keys("Hello")