使用Python中的ChromeDriver(Selenium)通过CSS选择器查找元素 [英] Finding elements by CSS selector with ChromeDriver (Selenium) in Python
问题描述
我正在将Selenium的ChromeDriver与Python结合使用,并且试图在页面上找到具有以下HTML的按钮:
I'm using ChromeDriver of Selenium with Python and I'm trying to find a button on my page that has the following HTML:
<input id="j_id0:SiteTemplate:j_id255:new" type="submit" name="j_id0:SiteTemplate:j_id255:new" value="New" class="kbutton-white">
我唯一知道保持不变的是ID和名称以"new"结尾的内容,我正在尝试使用以下代码来标识并单击该元素:
The only thing I know being constant is the id and name ending with "new" and I'm trying to use the following code to identify and click that element:
test_runner.driver.find_element_by_css_selector('[id*=new]').click()
但是,在运行代码时出现此错误:
However, I get this error when I run the code:
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"[id*=new]"}
这是我的错?
更新:此元素位于iframe内,在尝试查找该元素之前,我不得不切换到iframe.请查看评论以获取答案.
Update: This element was inside an iframe and I had to switch to the iframe before trying to find the element. Please see comments for the answer.
推荐答案
根据您共享的HTML调用所需元素上的 click()
,您可以使用以下 css_selector
:
As per the HTML you have shared to invoke click()
on the desired element you can use the following css_selector
:
driver.find_element_by_css_selector("input.kbutton-white[id$='new'][name$='new'][value='New']").click()
说明:
-
.kbutton-white
: class 属性. -
id $ ='new'
: id 属性以 new 结尾 -
name $ ='new'
: name 属性以 new 结尾 -
value ='New'
: value 属性.
.kbutton-white
: The class attribute.id$='new'
: id attribute ends with newname$='new'
: name attribute ends with newvalue='New'
: The value attribute.
但是该元素似乎是动态的,因此您可能需要按如下所示诱使 WebDriverWait :
But it seems the element is dynamic so you may need to induce WebDriverWait as follows :
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input.kbutton-white[id$='new'][name$='new'][value='New']"))).click()
参考文献
您可以在以下位置找到几个相关的详细讨论:
References
You can find a couple of relevant detailed discussions in:
这篇关于使用Python中的ChromeDriver(Selenium)通过CSS选择器查找元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!