gpt4 book ai didi

ruby - 使用 WebDriver 和 Ruby 与 JavaScript 下拉菜单交互?

转载 作者:数据小太阳 更新时间:2023-10-29 08:12:55 34 4
gpt4 key购买 nike

我正在使用 Ruby 和 Selenium WebDriver 为网页编写自动化程序,但在使用 JavaScript 而不是标准 HTML 制作的网站上的一些下拉列表中遇到了阻塞问题。在这些下拉列表中,用户可以从下拉列表中选择一个选项或单击它并开始输入以根据输入的内容过滤结果(我假设这些下拉列表可能用于非常长的列表选项)。

问题是我无法找到使用 WebDriver 与它们交互的方法,尽管我已经使用以下代码设法使其在 Selenium IDE 中工作,但是将此 IDE 脚本导出到 Ruby 不起作用:

<tr>
<td>select</td>
<td>css=select[name=dsref]</td>
<td>demo</td>
</tr>

我使用的 WebDriver 代码是:

def clickOn (parameters = {})
# This will accept a locator type and name to click on
#
# EXAMPLE
#
# clickOn(
# locatorType: :link,
# locatorName: 'Home'
# )
#
# This will click on the link named 'Home'
locatorType = parameters[:locatorType]
locatorName = parameters[:locatorName]
$driver.find_element(locatorType, locatorName).click
end

clickOn(
locatorType: :xpath,
locatorName: '/html/body/form/fieldset[4]/div[2]/div/div/div/a/span'
)

然后我尝试使用隐藏值字段的 xpath 以相同的方式从下拉列表中找到选择,但它无法找到隐藏值。

我尝试与之交互的 javascript 是:

<div id="tabWarehousing" class="cansee">
<div class="lineFirst">
<div class="of8">
<label for="formdsref">Warehouse</label>
<br>
<select id="sel2DZ" class="admn_dropdownmenu chzn-done" size="1" name="dsref" style="display: none;">
chosen=Chosen { form_field=select#sel2DZ.admn_dropdownmenu, options= {...}, active_field=

true

, more...}

<option selected="" value=""></option>
<option value="demo">demo</option>
<option value="demodownload">demo download</option>
</select>
<div id="sel2DZ_chzn" class="chzn-container chzn-container-single chzn-container-single- nosearch" style="width: 115px;">
<a class="chzn-single" tabindex="-1" href="javascript:void(0)"> <span>demo</span>
<div>
<b></b>
</div>
</a>
<div class="chzn-drop" style="left: -9000px; width: 113px; top: 18px;">
<div class="chzn-search">
<input type="text" autocomplete="off" style="width: 78px;">
</div>
<ul class="chzn-results">
<li id="sel2DZ_chzn_o_1" class="active-result result-selected" style="">demo</li>
<li id="sel2DZ_chzn_o_2" class="active-result" style="">demo download</li>
</ul>
</div>
</div>
</div>

关于如何使用 Ruby WebDriver 设置此下拉列表的值有什么想法吗?

最佳答案

javascript 只是与隐藏的下拉列表交互,因此您可以使用以下命令取消隐藏实际的下拉列表:

@driver.execute_script("document.getElementsByName('#{<REF_TO_HIDDEN_DROPDOWN}')[0].style.display = 'block'")

这会将隐藏下拉菜单的显示设置为“阻止”,以便您可以正常与其交互。

关于ruby - 使用 WebDriver 和 Ruby 与 JavaScript 下拉菜单交互?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15110632/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com