我正在使用Safari浏览器自动执行Web应用程序,并且无法单击iframe中存在的元素。相同的代码适用于chrome和Firefox。
我尝试了click
,javascript
之类的不同方法,但似乎无济于事。此外,这些方法不会显示错误消息。它们成功执行,屏幕上无任何反应。我也尝试单击层次结构中的其他元素,但是没有运气。
以下是我用于此任务的版本:
红宝石2.6.0p0
selenium-webdriver:3.142.3
Safari:12.1.1
chromedriver:74.0.3729.6
geckodriver:v0.24.0
require 'selenium-webdriver'
@browser = Selenium::WebDriver.for :safari
@browser.get 'https://www.splashmath.com/math-skills/first-grade/addition/add-using-pictures-within-10?from_page=Home'
@browser.find_element(xpath: "//a[@title='Practice Add using Pictures within 10 Worksheet']").click
wait = Selenium::WebDriver::Wait.new(timeout: 20)
wait.until { @browser.find_element(id: 'sp-iframe') }
@browser.switch_to.frame('sp-iframe')
wait.until { @browser.find_element(xpath: "//div[@class='btn-choice pt-choice index-0']").displayed? }
sleep 5
# This is where nothing is happening:
@browser.find_element(xpath: "//div[@class='btn-choice pt-choice index-0']").click
我还尝试了以下代码:
x = @browser.find_element(xpath: "//div[@class='btn-choice pt-choice index-0']")
@browser.execute_script("arguments[0].click();", x) #=> Nothing happens
# This throws Selenium::WebDriver::Error::MoveTargetOutOfBoundsError
x = @browser.find_element(xpath: "//div[@class='btn-choice pt-choice index-0']")
@browser.action.move_to(x).click.perform
HTML: