首页 新闻 会员 周边

selenium定位隐藏元素失败

0
悬赏园豆:20 [待解决问题]

如何定位百度首页输入框的下拉列表元素,并选择?

编写js代码,更改隐藏元素的display属性,再继续下面的定位

firefox_driver.execute_script('document.getElementsByClassName("bdsug-new")[0].style.display="block";') #
input1 = firefox_driver.find_element_by_css_selector("input#kw").click()
time.sleep(2)
ul = firefox_driver.find_element_by_css_selector("ul")
报错:Message: TypeError: document.getElementsByClassName(...)[0] is undefined
分析定位:
document.getElementsByClassName("bdsug bdsug-new")返回的值是None。
问题一:为什么返回的是None呢?
是否是条件不对?class=bdsug bdsug-new bdsugbg,三个值都试了下,并且换成其他元素的值,也是定位不到。
其他原因?执行js代码的时候,DOM元素还未加载。存疑,待验证。
div1 = firefox_driver.execute_script('window.onload=function(){a=document.getElementsByClassName("bdsug-new");return a;}')
拿到的div1值依然是None。
为什么返回的是None呢?这种隐藏元素如何定位?

Cc905的主页 Cc905 | 初学一级 | 园豆:182
提问于:2020-05-09 19:06
< >
分享
所有回答(2)
0

你的需求是什么 ,没必要根据class的"bdsug-new"定位啊?

胡七七 | 园豆:202 (菜鸟二级) | 2020-05-09 23:12

定位这个输入框下拉列表的内容。这个div是不可见的,不能直接定位这个div下的后代元素。也试过先定位input,然后点击,再定位div的后代元素,发现也是不行。只能先通过js使其可见,但是现在发现js找不到这个div。我截图的html可能不太详细,你可以看下百度首页

支持(0) 反对(0) Cc905 | 园豆:182 (初学一级) | 2020-05-10 18:00
0

def exhibition_element(self, selector: str) -> None:
"""将元素显示到可见窗口中 """
ele = self.find_element(selector)
js = "arguments[0].scrollIntoView();"
self.driver.execute_script(js, ele)
试试这个。ele是元素定位

叶先生啊 | 园豆:206 (菜鸟二级) | 2020-12-14 16:23
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册