我有一种方法来计算元素的数量divs并返回它们的数量.
public int getNumberOfOpenBets() {
openBetsSlip = driver.findElement(By.id("form_open_bets"));
openBets = openBetsSlip.findElements(By.className(" cashout_noCash"));
return openBets.size();
}
Run Code Online (Sandbox Code Playgroud)
这是页面源
<form id="form_open_bets" method="post" name="form_open_bets">
<input type="hidden" value="" name="action">
<input type="hidden" value="" name="bet_id">
<input type="hidden" value="" name="cashout_price">
<input id="target_page" type="hidden" value="" name="target_page">
<div id="By.id" class="slipWrapper ">
<div id="openBets_header"></div>
<div id="cashout_1626" class=" cashout_noCash">
<div id="cashout_1625" class=" cashout_noCash">
<div id="cashout_1615" class=" cashout_noCash">
<div id="cashout_1614" class=" cashout_noCash">
<div id="cashout_1613" class=" cashout_noCash">
</div>
</div>
</div>
</div>
</div>
</div>
</form>
Run Code Online (Sandbox Code Playgroud)
WebDriver抛出以下错误:不支持复合类名.考虑搜索一个类名并过滤结果或使用CSS选择器.
org.openqa.selenium.InvalidSelectorException: Compound class names are not supported. …Run Code Online (Sandbox Code Playgroud) 当我尝试使用class = "country name"在页面对象中有空格的类名时,我得到:
Compound class names not permitted Selenium::WebDriver::Error::UnknownError)
Run Code Online (Sandbox Code Playgroud)
如何使用具有空格的类名.
例如:
class = "country name"
Run Code Online (Sandbox Code Playgroud) 我正在编写一个 Python 程序,该程序使用 Selenium 导航到高级搜索页面上的搜索框中并将信息输入到搜索框中。本网站使用 Javascript,每次加载网站时,每个搜索框的 ID 和名称都会略有变化,但类名称保持一致。类名经常被重用,所以我的目标是使用find_elements_by_class_name(classname)该列表然后索引。
例如,一个盒子有 class name x-form-text x-form-field x-form-num-field x-form-empty-field,但我不能使用它,因为 selenium 认为它是一个复合类名并引发错误。如果我只使用其中的一部分,例如x-form-text,则无法找到该元素。我的希望是找到一种允许空格的方法,或者,如果不能这样做,则找到一种方法来搜索其类名包含一段没有空格的文本的所有元素,例如x-form-text.
任何帮助或想法将不胜感激!
编辑:
我试过这个代码:
quantminclass = 'x-form-text.x-form-field.x-form-num-field.x-form-empty-field'
quantmin = '25'
browser.find_elements_by_css_selector(quantminclass)[0].send_keys(quantmin)
但是得到列表索引超出范围的错误,这意味着它找不到任何东西。我检查了元素,这绝对是它的类名,所以我不确定如何继续。
我正在尝试通过webWhatsapp从聊天中打印我的消息之一。
我可以通过“控制台”选项卡中的Javascript完成此操作
recived_msg = document.getElementsByClassName('XELVh selectable-text invisible-space copyable-text') // returns an array of the chat
recived_msg[5].innerText // shows me the 4th message content
Run Code Online (Sandbox Code Playgroud)
问题是我试图在python上做同样的事情,但对我不起作用。
这是我尝试过的:
from selenium import webdriver
recived_msg = driver.find_element_by_class_name('XELVh selectable-text invisible-space copyable-text')
final = recived_msg[5].innerText #doesnt work for some reason
Run Code Online (Sandbox Code Playgroud)
我遇到的错误是:消息:无效的选择器:不允许使用复合类名
我对javascript有点陌生,所以很抱歉造成误会,并感谢您的帮助!:)